Python中is和 的區別

2021-09-11 23:33:42 字數 1066 閱讀 8756

is用於判斷兩個變數引用物件是否為同乙個,==用於判斷引用變數的值是否相等。

a is b 相當於 id(a)==id(b),id()能夠獲取物件的記憶體位址。

如果 a=10;b=a; 則此時 a 和 b 的記憶體位址一樣的;

但當 a=[1,2,3]; 另 b=a[:] 時,雖然 a 和 b 的值一樣,但記憶體位址不一樣。

如果此時定義 a=10、b=10, 然後再對比 a is b 會發現返回的結果是 true,這是因為在 python 中會實現建立乙個小型的整形池,範圍為 [-5,256],為這些整形開闢好記憶體空間,當**中定義該範圍內的整形時,不會再重新分配記憶體位址。而我在 pycharm 中進行測試:

#coding=utf-8

a=100000000000;

b=100000000000;

print a is b

結果:

true
後來查了資料才發現是:python出於對效能的考慮,但凡是不可變物件,在同乙個**塊中的物件,只有是值相同的物件,就不會重複建立,而是直接引用已經存在的物件。

互動模式下有點特殊:

如果變數寫在同一行,將會指向同乙個物件

>>> a=4444; b=4444;   # 寫在同一行

>>> a is b

true

>>> a == b

true

>>> c = 5555 # 寫在不同一行

>>> d = 5555 # 寫在不同一行

>>> c is d

false

>>> c == d

true

>>>

# -*- coding: utf-8 -*-

a = 4444; b = 4444

print(a is b) # true

c = 5555

d = 5555

print(c is d) # true

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