小編給大家分享一下id()在python中返回的對象地址究竟是什么地方,相信大部分人都還不怎么了解,因此分享這篇文章給大家參考一下,希望大家閱讀完這篇文章后大有收獲,下面讓我們一起去了解一下吧!
創(chuàng)新互聯(lián)服務(wù)項目包括陸良網(wǎng)站建設(shè)、陸良網(wǎng)站制作、陸良網(wǎng)頁制作以及陸良網(wǎng)絡(luò)營銷策劃等。多年來,我們專注于互聯(lián)網(wǎng)行業(yè),利用自身積累的技術(shù)優(yōu)勢、行業(yè)經(jīng)驗、深度合作伙伴關(guān)系等,向廣大中小型企業(yè)、政府機構(gòu)等提供互聯(lián)網(wǎng)行業(yè)的解決方案,陸良網(wǎng)站推廣取得了明顯的社會效益與經(jīng)濟效益。目前,我們服務(wù)的客戶以成都為中心已經(jīng)輻射到陸良省份的部分城市,未來相信會繼續(xù)擴大服務(wù)區(qū)域并繼續(xù)獲得客戶的支持與信任!
在函數(shù)返回時有一個身份的識別,就像我們寄包裹的時候都有一個單號,便于大家隨時跟蹤它的進度。我們今天要講的內(nèi)置函數(shù)id()同樣可以看作是用來進行身份識別的。那么我們進一步思考,id()最后返回的地址究竟是什么地方。
1.用于返回對象的身份(identity)。其實,這里所謂的身份,就是該對象的內(nèi)存地址。
a = 1 print(id(a)) print(hex(id(a)))
在我的計算機上,它們返回的是:
11246696 '0xab9c68'
分別為內(nèi)存地址的十進制和十六進制表示。
在Python中,整數(shù)和短小的字符,Python都會緩存這些對象,以便重復(fù)使用。當我們創(chuàng)建多個等于1的引用時,實際上是讓所有這些引用指向同一個對象。
a = 1 b = 1 print(id(a)) print(id(b))
上面程序返回
11246696 11246696
可見a和b實際上是指向同一個對象的兩個引用。
2.Python的內(nèi)置函數(shù)id()返回的其實是變量的內(nèi)存地址
c = [] #這里定義了一個新的變量[],給它分配了內(nèi)存空間,如題是82482056,c作為一個名稱指向內(nèi)存空間82482056 d = [] #這里定義了一個新的變量[],給它分配了內(nèi)存空間,如題是82452296,d作為一個名稱指向內(nèi)存空間82452296 e = d #注意,這里并沒有定義新的變量,沒有分配新的內(nèi)存空間,僅僅e作為一個名稱指向了和d相同的目標,即內(nèi)存空間82452296 print(id([])) #注意,這里又定義了一個新的變量[],給它分配了內(nèi)存空間,如題是82481544。但是,在這一句執(zhí)行完之后,并沒有名稱指向內(nèi)存空間82481544,也就是說,之后將無法再獲取到這個變量(Python沒有C語言的內(nèi)存指針機制),這個時候,根據(jù)Python的垃圾回收機制,這個變量會被銷毀,內(nèi)存空間82481544將被釋放 print(id([])) #這里又定義了一個新的變量[],給它分配了內(nèi)存空間,根據(jù)內(nèi)存空間分配算法,一般來說還是82481544,內(nèi)存空間分配算法這個就不展開說了。在這一句執(zhí)行完之后,也是并沒有名稱指向內(nèi)存空間82481544,這個變量會被銷毀,內(nèi)存空間3將被釋放print(id(c)) print(id(d)) print(id(e)) #這三句分別輸出它們指向的內(nèi)存地址
以上是“id()在python中返回的對象地址究竟是什么地方”這篇文章的所有內(nèi)容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內(nèi)容對大家有所幫助,如果還想學(xué)習更多知識,歡迎關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道!