[英]What's the difference between in-place assignment and assignment using the variable's name again?
在Python中,为变量赋值时,我们可以执行以下操作:
variable = variable + 20
要么
variable += 20
。
虽然我确实知道这两种操作在语义上是相同的,即它们达到了将variable
的先前值增加20的相同目标,但我想知道两者之间是否存在细微的运行时性能差异,或其他任何细微差异这可能认为一个比另一个更好。 有什么区别,还是完全一样? 如果有任何区别,其他语言(例如C ++)是否一样?
谢谢。
也许这可以帮助您更好地理解:
import dis
def a():
x = 0
x += 20
return x
def b():
x = 0
x = x + 20
return x
print 'In place add'
dis.dis(a)
print 'Binary add'
dis.dis(b)
我们得到以下输出:
In place add
4 0 LOAD_CONST 1 (0)
3 STORE_FAST 0 (x)
5 6 LOAD_FAST 0 (x)
9 LOAD_CONST 2 (20)
12 INPLACE_ADD
13 STORE_FAST 0 (x)
6 16 LOAD_FAST 0 (x)
19 RETURN_VALUE
Binary add
9 0 LOAD_CONST 1 (0)
3 STORE_FAST 0 (x)
10 6 LOAD_FAST 0 (x)
9 LOAD_CONST 2 (20)
12 BINARY_ADD
13 STORE_FAST 0 (x)
11 16 LOAD_FAST 0 (x)
19 RETURN_VALUE
您可以使用计时器比较性能来进行一千次左右的循环,但主要区别在于。 我想二进制添加应该更快。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.