【发布时间】:2011-01-02 21:25:56
【问题描述】:
>>> c = [1, 2, 3]
>>> print(c, id(c))
[1, 2, 3] 43955984
>>> c += c
>>> print(c, id(c))
[1, 2, 3, 1, 2, 3] 43955984
>>> del c
>>> c = [1, 2, 3]
>>> print(c, id(c))
[1, 2, 3] 44023976
>>> c = c + c
>>> print(c, id(c))
[1, 2, 3, 1, 2, 3] 26564048
有什么区别? += 和 + 不应该只是语法糖吗?
【问题讨论】:
-
您的示例清楚地表明它们不是。 += 显然是添加到该对象中,并且 x = a + b(即使 a = b = x)显然会创建一个新结果并将其分配给 LHS。我认为检查每个添加以查看它是否是简单添加(如上所述)并将其优化为 += 会适得其反。
-
为什么投反对票?我承认标题可能会更好,但问题本身非常有效
-
这个问题有一些关于列表连接操作的很好的附加信息stackoverflow.com/questions/2022031/…