原以为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)
网友评论