python中"is"和"=="區別
在做leetcode的時候,在判斷兩個數據是否相等時使用了python中的is not,想着入鄉隨俗,既然入了python的門就用python中的特定語法
天真的我還以為"is"和"=="是同樣的效果,結果當然是大錯特錯!
"is"作為判斷地址是否相等,即判斷兩個變量是否指向同一內存地址
"=="判斷兩個變量的值是否相等
同樣的,"is not"和"!="遵循同樣的邏輯
下面給出示例:
downey@ubuntu:~/workspace_downey/bloc_test$ python
Python 2.7.6 (default, Nov 23 2017, 15:50:55)
[GCC 4.8.4] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> a=[1,2,3]
>>> b=[1,2,3]
>>> print a is b
False
>>> print a == b
True
>>> id(a)
3074554924L
>>> id(b)
3072042316L
從示例中可以看出,a和b的內容是一樣的,但是地址不一致( id()函數用來獲取變量的地址)。
a is b 返回False