用id()函數(shù)當a,b為2的時候id相同,而為2.5的時候不同,這種情況在string字符串的時候也會出現(xiàn),即當很短的a,b賦值很短的字符串的時候,它們的id值相同,而很長的則不會。
成都創(chuàng)新互聯(lián)專注于中山網(wǎng)站建設服務及定制,我們擁有豐富的企業(yè)做網(wǎng)站經(jīng)驗。 熱誠為您提供中山營銷型網(wǎng)站建設,中山網(wǎng)站制作、中山網(wǎng)頁設計、中山網(wǎng)站官網(wǎng)定制、小程序定制開發(fā)服務,打造中山網(wǎng)絡公司原創(chuàng)品牌,更為您提供中山網(wǎng)站排名全網(wǎng)營銷落地服務。
id()函數(shù)用于獲取對象的內(nèi)存地址。語法id([object]),返回對象的內(nèi)存地址。對于字符串、整數(shù)等類型,變量的id是隨值的改變而改變的。
id(object)返回的是對象的“身份證號”,唯一且不變,但在不重合的生命周期里,可能會出現(xiàn)相同的id值。
python判斷3與3.0相等可以用id函數(shù)。根據(jù)查詢相關公開信息顯示,python中對象包含三個基本要素,如下:id(身份標識)可以理解為c里面的指針或內(nèi)存地址type(數(shù)據(jù)類型)value(值)。
在工作中遇到一個項目的陳年老bug,如圖:
bug原因是這里本應該傳idx,結(jié)果傳成了id。
但是這里最有意思的地方來了。
從截圖可以看出,這個id并不是入?yún)?,也沒有定義過,那他直接用怎么不會報參數(shù)未定義的語法錯誤呢?按說函數(shù)應該執(zhí)行不了直接報錯,但是實際上整個方法可以執(zhí)行不會報錯。
排查import也沒有import id,也沒有定義全局變量。那么這個id變量沒有在任何地方定義,為什么可以直接使用呢,還不會報語法錯誤?
經(jīng)過查閱資料才發(fā)現(xiàn),id在這里其實 不是一個變量,而是一個函數(shù)!
查看官方文檔可以看到:
所以id()本身是python內(nèi)置的一個函數(shù),但是因為很少用到,所以很多人并不太清楚。
用于獲取對象的內(nèi)存地址。
我們每一個人都有身份證來證明自己的身份。網(wǎng)絡地址也有,那就是id。
網(wǎng)絡id可以用來表示計算機屬于哪個網(wǎng)絡。Python中也有id函數(shù),而Python中每個對象擁有唯一的內(nèi)存id,所以id函數(shù)它主要用于獲取指定對象的內(nèi)存id值,是Python中必不可少的內(nèi)置函數(shù)。Python中id()函數(shù)用于獲取對象的內(nèi)存地址。
id(object)返回的是對象的“身份證號”,唯一且不變,但在不重合的生命周期里,可能會出現(xiàn)相同的id值。此處所說的對象應該特指復合類型的對象(如類、list等),對于字符串、整數(shù)等類型,變量的id是隨值的改變而改變的。