1. 程式人生 > >python3:挖掘python變數的本質

python3:挖掘python變數的本質

python變數宣告的時候是無型別的,例如 a=3, a=‘Andy’
咱們和 java 宣告做個比較例如 ,int a=3。
python 一切皆物件,實際a=3,是例項化int物件。

第二個要點是 它宣告之後,會產生一個指標,例如a=3

會在記憶體 生成 a指向3 (a>>3).

咱們先舉個簡單的例子:

a=[1,2,3]
b=a
b.append(4)
print(a)

列印結果:

[1, 2, 3, 4]

小夥伴應該很奇怪,我只是針對b 進行append,怎麼a也會變了。

解釋下 :
1.首先 在記憶體開闢個空間 儲存[1,2,3], a的指標指向這塊空間。
2.b=a 意思就是 把指向儲存空間的指標賦予給b,系統不會再建立一個空間
3.b.append(4) 是對儲存的內容修改,由於 a,b 都指向同一塊儲存,當然他們都改變了

我們判斷函式進行判斷下,看是不是這個原理

a=[1,2,3]
b=a
b.append(4)
print(a)

print(a is b)

print(id(a),id(b))

列印結果:

[1, 2, 3, 4]
True
2009980201288 2009980201288

a is b 比較的是id ,由於他們是一樣的,故返回True。

id 一樣 程式碼他們的指標指向同一個地方。

延伸點吧

大家要記住== 比較的是value ,並不是value。

例如:

a=[1,2,3]
b=[1,2,3]
print(a is b)
print(a==b)

列印結果:

False
True