今天我在进行一些Python列表操作时注意到了一种奇怪的行为。
假设:
当我执行 a += b 时,解释器返回:
假设:
a = []
b = 'xy'
当我执行 a += b 时,解释器返回:
a += b
a == ['x', 'y']
但是当我使用逗号(a+=b,)时,解释器会返回a = ['xy']。
a += b,
a == ['xy']
请问有人能解释这里发生了什么吗?
a += b
不是list.extend(a, b)
(尽管结果相似)。实际上更像是a = a.__iadd__(b)
。 - wimlist.extend
,因为list.__iadd__
修改了列表并返回它,而list.extend
仅修改了列表但不返回它,而像a += b
这样的赋值语句不会像其他一些语言那样返回其分配的值。 - TigerhawkT3a+=b
时,list.__iadd__
修改列表并返回它,并且返回的对象再次绑定。要看为什么+=
不像扩展,请考虑这两个函数的行为差异。 - wimlist.extend
进行比较。那个问题的答案同样适用于这个问题,这就是重复的含义。 - TigerhawkT3