我在python交互式shell中尝试了一个非常基本的代码
>>> a=[1,2,3]
>>> id(a)
36194248L
>>> a.append(4)
>>> a
[1, 2, 3, 4]
>>> id(a)
36194248L
>>>
>>> id([1,2,3])
36193288L
>>> id([1,2,3].append(4))
506033800L
>>> id([1,2,3].append(5))
506033800L
>>> id([1,2,3].append(6))
506033800L
问:当我为名为'a'的变量分配一个列表,并尝试追加更多值时,id()不会改变,但如果我尝试相同的事情而不分配给变量,则id()会改变。由于列表是可变的(即允许在相同的内存地址进行更改),为什么会出现这种行为?
答案 0 :(得分:4)
list.append()
会返回None
,而非列表。
您获得该对象的id()
结果,而None
是单身。对于给定的Python解释器运行,总是是相同的:
>>> id(None)
4514447768
>>> [].append(1) is None
True
>>> id([].append(1))
4514447768
答案 1 :(得分:1)
由于list.append
返回None
,您正在调用id(None)
,其中只有一个实例。