Python id() 函數


x=2
print(id(2))
print(id(x))
y='hello'
print(id('hello'))
print(id(y))

2022139072
2022139072
55049600
55049600


'''
在Python中一切皆對象,像2,'hello'這樣的值都是對象,只不過5是一個整型對象,而'hello'是一個字符串對象。

上面的x=2,在Python中實際的處理過程是這樣的:

先申請一段內存分配給一個整型對象來存儲整型值2,然后讓變量x去指向這個對象,實際上就是指向這段內存(這里有點和C語言中的指針類似)。

而id(2)和id(x)的結果一樣,說明id函數在作用於變量時,其返回的是變量指向的對象的地址。因為變量也是對象,所以在這里可以將x看成是對象2的一個引用。

原文鏈接:https://blog.csdn.net/tycoon1988/article/details/38850443
'''

 

x=2
print(id(x))
y=2
print(id(y))
s='hello'
print(id(s))
t=s
print(id(t))

2022139072
2022139072
64788352
64788352

從運行結果可以看到id(x)和id(y)的結果是相同的,id(s)和id(t)的結果也是相同的。這說明x和y指向的是同一對象,而t和s也是指向的同一對象。x=2這句讓變量x指向了int類型的對象2,而y=2這句執行時,並不重新為2分配空間,而是讓y直接指向了已經存在的int類型的對象2.這個很好理解,因為本身只是想給y賦一個值2,而在內存中已經存在了這樣一個int類型對象2,所以就直接讓y指向了已經存在的對象。這樣一來不僅能達到目的,還能節約內存空間。t=s這句變量互相賦值,也相當於是讓t指向了已經存在的字符串類型的對象'hello'(這個原理和C語言中指針的互相賦值有點類似)。

看這幅圖就理解了:

 

 




鏈接:https://blog.csdn.net/tycoon1988/article/details/38850443

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM