python中 is 和 的區別

2021-09-22 01:54:54 字數 1220 閱讀 4962

初學python時,遇到 is ,感覺和==很像

示例**

a=5b=

5a is b

true

a ==b

true

咋一看,感覺一模一樣

兩者有什麼區別?

先給答案

is 比較的是兩個變數的的id

== 比較的是兩個變數的value(值)是否相等

那什麼是id,value呢?

首先,python中萬物皆是物件,每個物件都至少有 id,value,type三個屬性。

言歸正傳,id是什麼呢?

乙個物件的id值在cpython直譯器裡就代表它在記憶體中的位址

就是變數的值

舉個例子

a=-5

b=-5id

(a)#out[4]: 1885122912

id(b)

#out[5]: 1885122912id(

-5)#out[6]: 1885122912

a is b#out[7]: true

# a 和 b的 id都是1885122912,相等,所以 a is b 返回true

a == b #out[8]:true

# a 和 b的 value都是5,相等,所以 a == b 返回true

舉乙個a ==b 和a is b返回結果不一樣的例子

a =-6

b =-

6a ==b #true

a is b #false

#為什麼 這一次 a is b 返回的結果是false呢?

python中,為了提高記憶體的利用率,對小整數[-5,256]進行了快取,

所以當變數的值為這些小整數【-5,256】時,他們的id值都相等。

其他範圍整數如-6,或者其他的型別的資料,id(記憶體值)就會不相等

例如

a=

b=[]a is b

false

結論:

is 方便判斷兩個變數id值是否相同,相同則引用同乙個位址的物件

== 判斷兩個變數的值是否相等

想要深入了解python中變數和記憶體位址的知識,傳送門

Python中is和 的區別

python中的物件包含三要素 id type value。is判斷的是a物件是否就是b物件,是通過id來判斷的。也就是記憶體位址。其實本質就是判斷id a id b 當然也可以使用 判斷。但是必須是id a id b 而不是a b a 1,2,3 b 1,2,3 a is b false id a...

Python中「is」和「 」的區別

python有兩個用於相等比較的運算子,is 和 等於 在這篇文章中,我將帶你們了解python中 is 和 的區別,並通過幾個簡單地例子說明應該在什麼時候使用它們,我們先來看乙個情景 當我還是乙個孩子的時候,我們的鄰居家有兩隻雙胞胎貓。這兩隻貓看起來看起來完全一樣 同樣的木炭毛,同樣敏銳的綠眼睛。...

python中 is 和 的區別

python中的物件包含三要素 id type value 其中 id用來唯一標識乙個物件,type標識物件的型別,value是物件的值 is判斷的是a物件是否就是b物件,是通過id來判斷的 判斷的是a物件的值是否和b物件的值相等,是通過value來判斷的 最終取決於物件的 eq 方法,本質上兩個變...