python 中is和」 「的區別

2021-09-17 08:49:38 字數 2107 閱讀 7834

python中有很多運算子,今天我們就來講講is和==兩種運算子在應用上的本質區別是什麼。

is 與 == 相比有乙個比較大的優勢,就是計算速度快,因為它不能過載,不用進行特殊的函式呼叫,少了函式呼叫的開銷而直接比較兩個整數 id。而 a == b 則是等同於a.eq(b)。繼承自 object 的eq方法比較兩個物件的id,結果與 is 一樣。但是多數python的物件會覆蓋object的 __eq__方法,而定義內容的相關比較,所以比較的是物件屬性的值。

在講is和==這兩種運算子區別之前,首先要知道python中物件包含的三個基本要素,分別是:id(身份標識)、type(資料型別)和value(值)。

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

==比較操作符和is同一性運算子區別

==是python標準操作符中的比較操作符,用來比較判斷兩個物件的value(值)是否相等,例如下面兩個字串間的比較:

>>> a = 'cheesezh'

>>> b = 'cheesezh'

>>> a == b

true

is也被叫做同一性運算子,這個運算子比較判斷的是物件間的唯一身份標識,也就是id是否相同。通過對下面幾個list間的比較,你就會明白is同一性運算子的工作原理:

>>> x = y = [4,5,6]

>>> z = [4,5,6]

>>> x == y

true

>>> x == z

true

>>> x is y

true

>>> x is z

false

>>>

>>> print id(x)

>>> print id(y)

>>> print id(z)

前三個例子都是true,這什麼最後乙個是false呢?x、y和z的值是相同的,所以前兩個是true沒有問題。至於最後乙個為什麼是false,看看三個物件的id分別是什麼就會明白了。

下面再來看乙個例子,例3中同一型別下的a和b的(a==b)都是為true,而(a is b)則不然。

>>> a = 1 #a和b為數值型別

>>> b = 1

>>> a is b

true

>>> id(a)

>>> id(b)

>>> a = 'cheesezh' #a和b為字串型別

>>> b = 'cheesezh'

>>> a is b

true

>>> id(a)

>>> id(b)

>>> a = (1,2,3) #a和b為元組型別

>>> b = (1,2,3)

>>> a is b

false

>>> id(a)

>>> id(b)

>>> a = [1,2,3] #a和b為list型別

>>> b = [1,2,3]

>>> a is b

false

>>> id(a)

>>> id(b)

>>> a = #a和b為dict型別

>>> b =

>>> a is b

false

>>> id(a)

>>> id(b)

>>> a = set([1,2,3])#a和b為set型別

>>> b = set([1,2,3])

>>> a is b

false

>>> id(a)

>>> id(b)

通過例3可看出,只有數值型和字串型的情況下,a is b才為true,當a和b是tuple,list,dict或set型時,a is b為false。

1、is 比較兩個物件的 id 值是否相等,是否指向同乙個記憶體位址;

2、== 比較的是兩個物件的內容是否相等,值是否相等;

3、小整數物件[-5,256]在全域性直譯器範圍內被放入快取供重複使用;

4、is 運算子比 == 效率高,在變數和none進行比較時,應該使用 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 方法,本質上兩個變...