is, is not與 ! 的區別

2021-10-22 14:37:18 字數 646 閱讀 1697

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 為移動...