gpt4 book ai didi

python - Python赋值运算符不同于非赋值运算符

转载 作者:行者123 更新时间:2023-12-03 07:36:37 25 4
gpt4 key购买 nike

我面对这种奇怪的行为,无法找到自己的解释。

MWE:

l = [1]
l += {'a': 2}
l
[1, 'a']
l + {'B': 3}
Traceback (most recent call last):
File "<input>", line 1, in <module>
TypeError: can only concatenate list (not "dict") to list

基本上,当我 +=时,python不会引发错误,并将键附加到列表中,而当我仅计算 +时,则得到期望的 TypeError

注意:这是Python 3.6.10

最佳答案

l += ...实际上是在调用object.__iadd__(self, other)并在in-place可变时修改对象l

原因(如@DeepSpace在他的评论中解释的)是,当您执行l += {'a': 2}时,该操作仅在适当的位置且仅当l可变时才更新l。另一方面,操作l + {'a': 2}的位置不正确,导致生成list + dictionary -> TypeError

(请参阅here)

l = [1]
l = l.__iadd__({'a': 2})
l
#[1, 'a']

与调用 +object.__add__(self, other)不同
l + {'B': 3}
TypeError: can only concatenate list (not "dict") to list

关于python - Python赋值运算符不同于非赋值运算符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61457122/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com