亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

python中的id()函數和is運算符

python中的id()函數和is運算符

泛舟湖上清波郎朗 2023-07-18 16:43:46
id(5) is id(5)  #returned False id(5) == id(5)  #returned True如果操作數指向同一個對象,is 運算符返回 true。這里它指向同一個對象(即 5)。但在這里,它返回為 False。這背后的原因是什么?
查看完整描述

1 回答

?
慕的地10843

TA貢獻1785條經驗 獲得超8個贊

首先,CPython 緩存較小的int值,因此相同的對象始終用于5.


id(5)但是,返回一個很大的 int值(例如,id(5) == 4431761200)。該值不會被緩存,因此兩次調用可能會id(5)或可能不會生成表示該值的相同對象。在表達式id(5) is id(5)和中id(5) == id(5),如果未緩存大對象,則必然有兩個不同的對象,因為這兩個對象都必須處于活動狀態,直到is或==完成其比較。


請注意,在某些情況下,對象可能看起來像是被緩存了,例如,


>>> id(id(5))

4434162352

>>> id(id(5))

4434162352

但這只是同一標識符被生命周期不重疊的兩個對象重用的情況。


>>> x = id(5)

>>> y = id(5)

>>> x == y

True

>>> id(x) is id(y)

False

>>> id(x) == id(y)

False


查看完整回答
反對 回復 2023-07-18
  • 1 回答
  • 0 關注
  • 88 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號