美文网首页
python中的赋值运算符`+=`

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

作者: 飞跑的蛤蟆 | 来源:发表于2020-07-03 16:20 被阅读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)

    相关文章

      网友评论

          本文标题:python中的赋值运算符`+=`

          本文链接:https://www.haomeiwen.com/subject/imzaghtx.html