前言
本文主要內容是 Python 中運算符 ==
和 is
的區別。
進入正文前,首先簡單介紹一下 Python 中對象的 3 個基本要素,id(身份標識)、type(數據類型)和value(值)。
正文
==
是python標準操作符中的比較操作符,用來比較判斷兩個對象的value(值)是否相等,例如下面兩個字符串間的比較:
>>> a = 'cheesezh'
>>> b = 'cheesezh'
>>> a == b
True
is
也被叫做同一性運算符,這個運算符比較判斷的是對象間的唯一身份標識,也就是id是否相同。
>>> 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)
3075326572
>>> print id(y)
3075326572
>>> print id(z)
3075328140
可以明顯的看到前 3 個比較都是 True, 最後一個是 False。
使用 id()
方法查看 x, y, z 的對象ID就明白了。
我在這裏使用的是數組,其實,當它們是 tuple, list, dict 或者 set 時也一樣。
不過,當類型是 int 或者 string 時,它們的對象ID都會一樣,
>>> a = 1
>>> b = 1
>>> a is b
True
>>> a = "asd"
>>> b = "asd"
>>> a is b
True