python3資料池理解
阿新 • • 發佈:2018-12-20
數字型小資料池
以前一直對小資料池理解有所偏差,以為在同一段程式碼中,整數[-5,267)之外的數字被賦予兩個不同的變數時,地址是不一樣的,結果發現在同一程式碼塊中:
a = 100
b = 100
print(id(a))
print(id(b))
print(a is b)
print("----------")
c = 500
d = 500
print(id(c))
print(id(d))
print(c is d)
第一次輸出執行結果:
140711802683312 140711802683312 True ---------- 1041969632720 1041969632720 True
第二次執行結果:
140711802683312
140711802683312
True
----------
1095767872976
1095767872976
True
可以發現兩次結果中100這個數的地址一直都是140711802683312,不管執行幾次都沒有發生變化;而500這個數字的地址一直都在發生變化,但是在同一個程式碼塊中,被賦予變數時,僅僅是地址被傳遞了,並不會建立一個新的記憶體地址來儲存這個數;
而在Python互動介面,每一行程式碼都可以看做是一個程式碼塊,所以400被建立時,變數c和d的地址是不同的,同時可以看到100這個是的地址一直都是140711802683312,完全沒有發生變化。
所以小資料池其實指的是在Python記憶體中一直存在[-5,267),而且這部分的地址永遠不會發生變化,超出這部分,每次被建立時地址都會發生變化。
以上純屬個人理解,如有錯誤,請指正,謝謝!!