6.3 增量赋值的性能更好¶
诸如 +=
和 *=
这些运算符,叫做 增量赋值运算符。
这里使用用 += 举例,以下两种写法,在效果上是等价的。
# 第一种
a = 1 ; a += 1
# 第二种
a = 1; a = a + 1
+=
其背后使用的魔法方法是
__iadd__
,如果没有实现这个方法则会退而求其次,使用 __add__
。
这两种写法有什么区别呢?
用列表举例 a += b,使用 __add__
的话就像是使用了a.extend(b),如果使用
__add__
的话,则是 a =
a+b,前者是直接在原列表上进行扩展,而后者是先从原列表中取出值,在一个新的列表中进行扩展,然后再将新的列表对象返回给变量,显然后者的消耗要大些。
所以在能使用增量赋值的时候尽量使用它。