Python is 和 的區別

2021-10-04 01:29:43 字數 1615 閱讀 8431

i1 = 205464113

i2 = 205464113

i3 = i1

print(id(i1))

print(id(i2))

print(id(i3))

print(i1 is i2)

print(i1 == i2)

print(i1 is i3)

print(i1 == i3)

print('**********')

f1 = 1.574

f2 = 1.574

f3 = f1

print(id(f1))

print(id(f2))

print(id(f3))

print(f1 is f2)

print(f1 == f2)

print(f1 is f3)

print(f1 == f3)

print('**********')

str1 = 'james'

str2 = 'james'

str3 = str1

print(id(str1))

print(id(str2))

print(id(str3))

print(str1 is str2)

print(str1 == str2)

print(str1 is str3)

print(str1 == str3)

print('**********')

t1 = (1, 2, 3)

t2 = (1, 2, 3)

t3 = t1

print(id(t1))

print(id(t2))

print(id(t3))

print(t1 is t2)

print(t1 == t2)

print(t1 is t3)

print(t1 == t3)

print('**********')

結果如下:

前面三個都很好理解,最後乙個 id 由於 t1 和 t2 id 不同所以判斷 is 的時候為 false,表示並不是指向同一物件,但是物件值是一樣的,所以判斷 == 的時候為 true。

再來乙個例子就:

a = 2.0

b = 2

print(id(a))

print(id(b))

print(a is b)

print(a == b)

結果如下:

解釋:顯然 a 是乙個浮點數型別,b 是乙個整型,所以肯定不是指向同一物件,對應的物件識別符號也不同,所以判斷 is 為 false。但是由於數學上 2.0 = 2 所以判斷 == 為 true。

可以認為:is 為 true,== 必為 true。因為指向同一物件,當然值是一樣的。但是 == 為 true,is 不一定為 true,上例即為反例。

python is和 的區別

在 python 中會用到物件之間比較,可以用 也可以用 is 但是它們的區別是什麼呢?is 比較的是兩個例項物件是不是完全相同,它們是不是同乙個物件,占用的記憶體位址是否相同。萊布尼茨說過 世界上沒有兩片完全相同的葉子 這個is正是這樣的比較,比較是不是同一片葉子 即比較的id是否相同,這id類似...

python is 和 的區別

python中的物件包含三百要素 id type value 其中id用來唯一標識乙個物件度,type標識物件的知型別,道value是物件的值內 is判斷的容是a物件是否就是b物件,是通過id來判斷的 判斷的是a物件的值是否和b物件的值相等,是通過value來判斷的 如下 或許可以幫助你理解。a 1...

Python「is」和「 」的區別

變數 用來標識 identify 一塊記憶體區域。為了方便表示記憶體,我們操作變數實質上是在操作變數指向的那塊記憶體單元。編譯器負責分配。我們可以使用python內建函式id 來獲取變數的位址 變數名 是乙個識別符號 dientify 用來代之一塊記憶體空間,使用這個變數名,我們可以很方便的操作這塊...