要理解Python中is和==的區別,首先要理解Python對象的三個要素:
要素 | 說明 | 獲取方式 |
---|---|---|
id | 身份標識,基本就是內存地址,用來唯一標識一個對象 | id(obj) |
type | 數據類型 | type(obj) |
value | 值 | :-----: |
is和==區別
標識 | 名稱 | 判斷方法 |
---|---|---|
is | 同一性運算符 | id |
== | 比較運算符 | value |
程序舉例
例1:
屏幕截圖2.jpg
a = {"a":1, "b":2}
b = a.copy()
a == b # True value一樣
a is b # False id不一樣
例2:
屏幕截圖.jpg
>>> x = y = [4,5,6]
>>> z = [4,5,6]
>>> x == y
True
>>> x == z
True
>>> x is y
True
>>> x is z
False
>>>
>>> print id(x)
>>> print id(y)
>>> print id(z)
>>> a = 1 #a和b為數值類型
>>> b = 1
>>> a is b
True
>>> id(a)
>>> id(b)
>>> a = 'cheesezh' #a和b為字符串類型
>>> b = 'cheesezh'
>>> a is b
True
>>> id(a)
>>> id(b)
>>> a = (1,2,3) #a和b為元組類型
>>> b = (1,2,3)
>>> a is b
False
>>> id(a)
>>> id(b)
>>> a = [1,2,3] #a和b為list類型
>>> b = [1,2,3]
>>> a is b
False
>>> id(a)
>>> id(b)
>>> a = {'cheese':1,'zh':2} #a和b為dict類型
>>> b = {'cheese':1,'zh':2}
>>> a is b
False
>>> id(a)
>>> id(b)
>>> a = set([1,2,3])#a和b為set類型
>>> b = set([1,2,3])
>>> a is b
False
>>> id(a)
>>> id(b)