在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
python中關於變數與記憶體位址的關係
當我們建立乙個變數時,在及其的記憶體中,系統會自動給該變數分配一塊記憶體,用於存放變數值。這樣說不好理解,直接用 來說明 x 4 y x 將變數x重新賦給另乙個新變數y id y 位址為30834096l x 2 對變數x重新賦值 print x,y id x 位址為30834144l id x 位...
指標與位址之位址與變數
一.int a 10 1 int 代表的是資料型別,其標識的資料儲存為整形型別,預設帶有乙個unsigned 代表在記憶體當中申請 4位元組空間 2 a 是乙個對映符號 用於標記儲存該記憶體的資料位址,其在變數表中定義 a 0x7fffacd23bae 4 int b 0x7fffacd23bae ...
指標與變數的關係
定義變數 按型別分配空間 型別 變數名 型別 陣列名 陣列名 下標 1 指標與一維普通陣列 指標陣列 專門用於存放指標的陣列 型別 陣列名 長度 eg int buf 10 引用元素 陣列名 下標法 2 指標與二維陣列 int buf 10 int buf 3 4 一維陣列名 是指向該行第一列 bu...