python變數與位址的關係

2022-07-31 18:18:10 字數 1218 閱讀 8060

在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...