我在命令行中輸入:a, b = 1, 1
a is b # Truea, b = 1.1, 1.1
a is b # True但是這樣:a = 1.1
b = 1.1
a is b # False 想不明白int:a = 1
b = 1
a is b: # True這樣:
a = 1.1
b = a
a is b: True當(dāng)為 a 和 b 單獨(dú)賦值時(shí),如果值為浮點(diǎn)型 使用 is 比較兩個(gè)值就是 False int類(lèi)型不存在此類(lèi)情況不明白為什么
1 回答

慕妹3146593
TA貢獻(xiàn)1820條經(jīng)驗(yàn) 獲得超9個(gè)贊
1.首先關(guān)于 is
,如樓上所說(shuō)的,is
判斷兩個(gè)變量是否指向內(nèi)存的同一區(qū)域,也即變量的 id 是否相同。
2.題主需要了解一下 小整數(shù)對(duì)象池
的概念。因?yàn)橐话闱闆r下,程序中小整數(shù) [-5, 256] 的使用是比較頻繁的,python 為了優(yōu)化速度,建立了 小整數(shù)對(duì)象池
,也就是說(shuō)這些小整數(shù)在內(nèi)存中是唯一的。因此:
a = 1b = 1a is b # True
a, b 都是小整數(shù),其對(duì)應(yīng)相同的內(nèi)存,也就是說(shuō)變量的id是相同的,所以 a is b
返回 True
。
而對(duì)于浮點(diǎn)數(shù),每建立一個(gè)新的變量就開(kāi)辟一塊內(nèi)存,所以 a = 1.1
和 b = 1.1
指向的內(nèi)存地址是不同的,因此 a is b
返回 False
。
添加回答
舉報(bào)
0/150
提交
取消