python 中 is, is not ,==, != 的區別

首先說結論:

1、is, is not 對比的是兩個變量的內存地址

2、==,!= 對比的是兩個變量的值

由此可以進一步推出:

a、假如比較的兩個變量,指向的都是不可變的類型(str, tuple等),那麼is,is not 和 ==,!= 是完全等價的。

b、假如對比的兩個變量,指向的是不可變得類型(list,dict等),則兩者是有區別的。

 

現分別對這兩種情況加以說明:

1、比較的兩個變量均指向不可變類型

a="hello"
b="hello"
print(a is b, a==b) # 輸出爲 True, True

因爲"hello" 爲str 類型,所以兩者指向同一內存地址,故 is 和 == 輸出均爲 True.

 

2、比較的兩個變量均指向可變類型

a=["hello"]
b=["hello"]
print(a is b, a==b) # 輸出爲 False, True

雖然兩個列表的相同,但是因爲列表是可變類型,所以兩次賦值的內存地址是不一樣的,故 is 輸出爲False, == 輸出爲 True.

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章