增强的分配实施

时间:2015-08-03 03:46:13

标签: python python-2.7

我理解这两个语句在语法上是相同的,但它们的实现是不同的:

>>>    s = [1,2,3]
>>>    t = [4,5,6]  
>>>    s += t    
>>>    s = s + t

在第一种情况下,左侧仅评估一次。

但是如何实施?

仅评估一次是什么意思?

1 个答案:

答案 0 :(得分:1)

如果是列表,+=就位,这意味着它不会创建新列表,它会更改左侧的列表。它在内部调用__iadd__()方法列表(i代表的位置)。

其中,连接运算符+实际上创建了一个新列表。 (它在内部调用__add__()方法)

显示这种差异的简单示例 -

+= -

>>> s = [1,2,3]
>>> t = [4,5,6]
>>> z = s
>>> s+=t
>>> s
[1, 2, 3, 4, 5, 6]
>>> z
[1, 2, 3, 4, 5, 6]

用于连接 -

>>> s = [1,2,3]
>>> t = [4,5,6]
>>> z = s
>>> s = s + t
>>> z
[1, 2, 3]
>>> s
[1, 2, 3, 4, 5, 6]