【发布时间】:2021-02-09 05:36:42
【问题描述】:
python 3.9.1
m = [15, 20, 25]
print(m, id(m))
m *= 2
print(m, id(m))
m = m * 2
print(m, id(m))
我执行了这段代码,结果是
[15, 20, 25] 2375102123456
[15, 20, 25, 15, 20, 25] 2375102123456
[15, 20, 25, 15, 20, 25, 15, 20, 25, 15, 20, 25] 2375097669568
当我使用*=操作符时id值没有改变,而m = m * 2是。
这两个id变化有什么区别?
【问题讨论】:
-
对于这个
*= 2操作,您将相同的列表扩展两次,因此 id 是相同的。现在对于这个m = m * 2操作,您首先扩展了列表,然后传递了一个对m的新引用。这就是为什么这个id(m)显示不同的内存地址。
标签: python-3.x list operators