python中的赋值运算符`+=`

2020-07-03  本文已影响0人  飞跑的蛤蟆

原以为python的算数运算符++=运算符是一回事。直到今天看到stackoverflow上讨论,为啥+=能运算列表和字典,而使用+却报错。

In [1]: l = [1]

In [2]: l += {'a':2}

In [3]: l
Out[3]: [1, 'a']

In [4]: l + {'b':3}
---------------------------------------------------------------------------
TypeError                                 Traceback (most recent call last)
<ipython-input-4-d22450e8e03b> in <module>()
----> 1 l + {'b':3}

TypeError: can only concatenate list (not "dict") to list

对于+号操作,可变对象和不可变对象调用的都是add操作

对于+=操作,可变对象调用add,不可变对象调用的是iadd(不可变对象没有iadd)iadd是原地修改(原位操作)。

参考资料:
Python assignment operator differs from non assignment(stackoverflow)

上一篇 下一篇

猜你喜欢

热点阅读