为什么python扩充分配比常规分配更好?

问题描述 投票:0回答:2

为什么使用此python代码

a += 1

胜过

a = a + 1

除了第一个更容易理解和清洁之外还有其他原因为什么我应该使用它,就像python处理方式有何区别每个陈述或每个陈述之间的任何性能差异,或者我可以使用我想要的任何东西。

python syntax
2个回答
0
投票

[a += 1快于a = a+1

请参见示例代码。

def f(a):
    while a < 10000:
        a += 1
    return a

def g(a):
    while a < 10000:
        a = a + 1
    return a

a = 1
%timeit f(a)
490 µs ± 20.7 µs per loop (mean ± std. dev. of 7 runs, 1000 loops each)

a = 1
%timeit g(a)
513 µs ± 34.8 µs per loop (mean ± std. dev. of 7 runs, 1000 loops each)

0
投票

在您提供的简单情况下,几乎没有区别。增强分配被认为更易于阅读,因为它是一个常见的习惯用法,并且简洁地表达了一个常见的操作。

但是在某些情况下可以有所作为。如果要增加的位置来自复杂的表达式或具有副作用的表达式,则您不想重复它。

a[call_expensive_function()] += 1
vs
a[call_expensive_function()] = a[call_expensive_function()] + 1

[另外,类型有可能实现与+=不同的+。一个例子是列表:

l1 = [1, 2, 3]
l2 = l1
l1 = l1 + [3, 4]
print(l1) # prints [1, 2, 3, 4, 5]
print(l2) # prints [1, 2, 3]

l3 = [1, 2, 3]
l4 = l3
l1 += [3, 4]
print(l3) # prints [1, 2, 3, 4, 5]
print(l4) # prints [1, 2, 3, 4, 5]

列表通过在适当位置修改列表来实现+=(类似于extend()方法),而+创建新列表。从上面可以看到,如果您对同一列表有多个引用,这将产生影响。

© www.soinside.com 2019 - 2024. All rights reserved.