gpt4 book ai didi

python - 就地赋值和再次使用变量名赋值有什么区别?

转载 作者:行者123 更新时间:2023-11-28 01:39:37 26 4
gpt4 key购买 nike

在 Python 中,当给变量赋值时,我们可以这样做:

变量 = 变量 + 20

变量 += 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

您可以使用计时器执行一千次左右的循环来比较性能,但主要区别在于那一次。我想二进制加法应该更快。

关于python - 就地赋值和再次使用变量名赋值有什么区别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47796013/

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