[問題] 請問for裡值的記憶體位址

作者: jijuan   2019-02-25 09:30:14
numlist = [0]
print(id(numlist[0]))
for index, i in enumerate(numlist):
print(id(i))
print(id(numlist[index]))
numlist[index] = 100
i = 100
print(id(i))
print(id(numlist[index]))
輸出的結果是
8791232734000
8791232734000
8791232734000
8791232737200
8791232737200
也就是i跟numlist[index]的記憶體位址是一樣的
那為什麼i = 100不會改變numlist裡的值
而用numlist[index] = 100卻可以
另外發現賦值之後記憶體的位址也變了
請問這邊的運作方式是怎樣的呢
作者: Yshuan (倚絃)   2019-02-25 11:27:00
i=100 # i指向另一塊值為100的記憶體
作者: lemon651 (小明)   2019-02-25 13:02:00
因為你看錯輸出的結果了,我自己跑的結果只有id(i)有變,謝謝
作者: LZN (秋)   2019-02-25 14:54:00
lemon的意思是你輸出的結果最後一行會是8791232734000而不是8791232737200www.laurentluce.com/posts/python-integer-objects-implemen

Links booklink

Contact Us: admin [ a t ] ucptt.com