在 Python 中, a += b 并不总是等价于 a = a + b

2019-01-29 21:27:43 +08:00
 itskingname

大家经常在一些博客中看到这样的说法:

a += 1

等价于

a = a + 1

这种说法实际上并不准确。

我们来看一个例子:

>>> a = [1, 2, 3]
>>> a += (4,)
>>> a
[1, 2, 3, 4]

>>> a = [1, 2, 3]
>>> a = a + (4,)
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: can only concatenate list (not "tuple") to list

这里报错了,说明a += ba = a + b并不是完全等价的。

请点击查看完整内容:在 Python 中,a += b 并不总是等价于 a = a + b

3829 次点击
所在节点    推广
30 条回复
mayne95
2019-01-30 08:47:40 +08:00
大家都知道🐱和🐶生不出🐱
cpyhaha
2019-01-30 08:48:43 +08:00
感觉楼主的出发点还是没错的,但是这种问题一般会比较针对初学者吧!来 V2 就挨喷了
Mirage09
2019-01-30 09:26:48 +08:00
V2EX 该出个 newbie 节点,把这些东西放在这个节点。
omri
2019-01-30 10:07:42 +08:00
学习了,感谢楼主
msg7086
2019-01-30 11:19:39 +08:00
+= 和 + 本来就是两个运算符。通常为了不反直觉,都尽量把他们定义成一样的意思。
你要是喜欢,还能把+定义成-呢。
以前不是还有人把 true 和 false 的定义对调着玩吗?你是不是又要说 true 等价于 false 呢。
tabris17
2019-01-30 11:26:14 +08:00
a += 1
应该等价于
a = a + 1

如果不等价,那就是实现上有问题,属于副作用
Livid
2019-01-30 14:01:38 +08:00
@Mirage09 谢谢。我们有这个节点:

/go/newbie
Livid
2019-01-30 14:02:06 +08:00
@itskingname 营销内容只能发到这个节点:

/go/promotions

这个主题已经被移动。
Mirage09
2019-01-30 14:06:43 +08:00
@Livid 还真的有😂疏忽了
itskingname
2019-01-30 14:50:08 +08:00
@Livid 感谢站长提醒。不过这篇文章我确实没有推销东西啊。博客上面的二维码是每篇文章自动添加的。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/531710

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX