python變量與地址的關系


python變量與地址的關系

在C語言中,系統會為每個變量分配內存空間,當改變變量的值時,改變的是內存空間中的值,變量的地址是不改變的。

而在python中,Python采用的是基於值的管理方式。

當給變量賦值時,系統會為這個值分配內存空間,然后讓這個變量指向這個值;當改變變量的值時,系統會為這個新的值分配另一個內存空間,然后還是讓這個變量指向這個新值。

也就是說,C語言中變量變的是內存空間中的值,不變的是地址;而在Python中,變量變的是地址,不變的是內存空間中的值

x = 12
print(x)

x = 3.14
print(x)

同時,如果沒有任何變量指向內存空間的某個值,這個值稱為垃圾數據,系統會自動將其刪除,回收它占用的內存空間。

同時,如果沒有任何變量指向內存空間的某個值,這個值稱為垃圾數據,系統會自動將其刪除,回收它占用的內存空間。

另外,我們可以使用python的id()函數來查看變量的內存地址。

a = 2.0
b = 2.0
pirnt(id(a))  # 2658670250000
pirnt(id(b))  # 2658670249968

a = 2
b = 2
print(id(a))  # 140725523280176
print(id(b))  # 140725523280176

我們看到,當a,b都是2.0時,它們的地址不一樣,說明系統為a,b分配了不同的內存空間。但是,當a,b都是2時,它們的地址是一樣的,怎么回事呢?這是因為,為了提高內存空間的利用效率,對於一些比較小的整型變量(int)使用了相同的內存空間。如果數值比較大,地址就不一樣了。

a = 2
b = 2
print(id(a))  # 140725523280176
print(id(b))  # 140725523280176

a = 222
b = 222
print(id(a))  # 140725523287216
print(id(b))  # 140725523287216

a = 2222
b = 2222
print(id(a))  # 2658670249520
print(id(b))  # 2658670249776


免責聲明!

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



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