作者jijuan ()
看板Python
标题[问题] 请问for里值的记忆体位址
时间Mon Feb 25 09:30:14 2019
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却可以
另外发现赋值之後记忆体的位址也变了
请问这边的运作方式是怎样的呢
--
※ 发信站: 批踢踢实业坊(ptt.cc), 来自: 125.231.86.211
※ 文章网址: https://webptt.com/cn.aspx?n=bbs/Python/M.1551058216.A.DF1.html
1F:推 Yshuan: i=100 # i指向另一块值为100的记忆体 02/25 11:27
2F:推 lemon651: 因为你看错输出的结果了,我自己跑的结果只有id(i)有变 02/25 13:02
3F:→ lemon651: ,谢谢 02/25 13:02
我的意思是,不管是i或numlist[index],赋值後位址都变了。这个片段numlist[index]赋
值部分被注解掉我是知道的。
4F:→ LZN: lemon的意思是你输出的结果最後一行会是8791232734000 02/25 14:54
5F:→ LZN: 而不是8791232737200 02/25 14:54
我贴错结果了,那个结果是没有注解掉的,应该要把那行注解拿掉才对。
6F:→ LZN: www.laurentluce.com/posts/python-integer-objects-implemen 02/25 16:57
感谢楼上分享这篇文章
※ 编辑: jijuan (125.231.86.211), 02/25/2019 19:30:01