Python學習之 a == b 和 a is b 的區別
阿新 • • 發佈:2018-12-19
Python學習中經常會遇到 a == b 和 a is b 的問題, 也許你會為此迷惑。下面,我們來簡單分析一下:
首先我們要了解對於Python物件而言,一般存在三個屬性:type 型別, value 值 以及 地址id
- 1 a == b , 這是一個比較運算子,用於比較兩個物件的value(值)是否相同
相同則返回True 否則返回False
示例:
# 以下用於示例 a == b 用法 >>> a = 1 # a, b 數值型別 >>> b = 1 >>> a == b True >>> a = 'zhaoxuan'
- 2 a is b , 這是一個同一性運算子。用於比較兩個物件的物理id。如果相同則返回True
否則返回False
示例:
# 以下用於示意 a is b 用法: >>> a = -5 # a, b 數值型別 >>> b = -5 >>> a is b True >>> a = -6 >>> b = -6
-
綜上:
- 1 數值相同時 a == b 返回True,否則返回False
- 2 數值相同時 a is b 未必返回True
-
總結:
- Python為了優化效率,內建了小整數物件池和簡單字串物件池。 小整數物件池包括[-5, 256]。這之間的小整數數值相同時在小整數物件池中屬於同一物件 即是 a is b 返回True。簡單字串也是如此,對於其他物件則不適用
-