1、is, is not 對比的是兩個變數的記憶體位址
2、==,!= 對比的是兩個變數的值
由此可以進一步推出:
a、假如比較的兩個變數,指向的都是位址不可變的型別(str等),那麼is,is not 和 ==,!= 是完全等價的。
b、假如對比的兩個變數,指向的是位址可變的型別(list,dict,tuple等),則兩者是有區別的。
現分別對這兩種情況加以說明:
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. 與 的區別? 與 的區別?
相同點 和 都是表示與的邏輯運算子,其運算結果一致 不同點 邏輯與 當兩邊的表示式都為true的時候,整個運算結果才為true,否則為false。短路與 當第乙個表示式的值為false的時候,則不再計算第二個表示式 注意 還可以做位運算子,當表示式不是boolean型別的時候 例項1 public ...
this 與this的區別
this 與this的區別 相信很多剛接觸jquery的人,很多都會對 this 和this的區別模糊不清,那麼這兩者有什麼區別呢?首先來看看jquery中的 這個符號,實際上這個符號在jquery中相當於jquery 即 this jquery 也就是說,這樣可以返回乙個jquery物件。那麼,當...
a與 a的區別
首先,來一段 void main int ptr int a 1 printf d,d a 1 ptr 1 列印出來的值為多少呢?這裡主要是考查關於指標加減操作的理解。對指標進行加1操作,得到的是下乙個元素的位址,而不是原有位址值直接加1。所 以 乙個型別為t的指標的移動,以sizeof t 為移動...