Python中is和 的區別

2021-10-05 21:55:46 字數 2522 閱讀 6902

在python中一切都是物件。

python中物件包含的三個基本要素,分別是:id(身份標識)、type(資料型別)和value(值)。物件之間比較是否相等可以用==,也可以用is。

is和==都是對物件進行比較判斷作用的,但對物件比較判斷的內容並不相同。下面來看看具體區別在哪?

is比較的是兩個物件的id值是否相等,也就是比較兩個物件是否為同乙個例項物件,是否指向同乙個記憶體位址。

==比較的是兩個物件的內容是否相等,缺省會呼叫物件的__eq__()方法。

以下**在python3.5下測試通過。

==是python標準操作符中的比較操作符,用來比較判斷兩個物件的value(值)是否相等。

**1:

>>

> a =[1

,2,3

]>>

> b = a

>>

> b is a

true

>>

> b == a

true

>>

> b = a[:]

>>

> b is a

false

>>

> b == a

true

解釋一下為什麼?is也被叫做同一性運算子,也就是id是否相同。看下面**, a和b變數的id不同, 所以b==a是true, b is a 是false.

**2:

>>

>

id(a)

4364243328

>>

>

>>

>

id(b)

4364202696

**3:

>>

> a =

256>>

> b =

256>>

> a is b

true

>>

> a == b

true

>>

>

>>

> a =

1000

>>

> b =

10**

3>>

> a == b

true

>>

> a is b

false

>>

>

結論:數字型別不完全相同。

為什麼256時相同, 而1000時不同?

因為出於對效能的考慮,python內部做了很多的優化工作,對於整數物件,python把一些頻繁使用的整數物件快取起來,儲存到乙個叫small_ints的鍊錶中,在python的整個生命週期內,任何需要引用這些整數物件的地方,都不再重新建立新的物件,而是直接引用快取中的物件。python把這些可能頻繁使用的整數物件規定在範圍[-5, 256]之間的小物件放在small_ints中,但凡是需要用些小整數時,就從這裡面取,不再去臨時建立新的物件。

**4:

>>

> c =

'pythontab.com'

>>

> d =

'pythontab.com'

>>

> c is d

false

>>

> c == d

true

>>

> c =

'pythontabcom'

>>

> d =

'pythontabcom'

>>

> c is c

true

>>

> c == d

true

結論:字串型別不完全相同。這個和直譯器實現有關。

**5:

>>

> a =(1

,2,3

)#a和b為元組型別

>>

> b =(1

,2,3

)>>

> a is b

false

>>

> a =[1

,2,3

]#a和b為list型別

>>

> b =[1

,2,3

]>>

> a is b

false

>>

> a =

#a和b為dict型別

>>

> b =

>>

> a is b

false

>>

> a =

set([1

,2,3

])#a和b為set型別

>>

> b =

set([1

,2,3

])>>

> a is b

false

當變數是數字、字串、元組,列表,字典時,is和= =都不相同, 不能互換使用!當比較值時,要使用==,比較是否是同乙個記憶體位址時應該使用is。當然,開發中比較值的情況比較多。

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 方法,本質上兩個變...