例如下面的代码:
def product(list):
p =1
for i in list:
p *= i
return p
我找到了这段代码,但是我需要能够解释它的每个部分。
通常p *= i
与相同p = p * i
。
有时情况可能有所不同,我认为已经发布的解释还不够清楚,因此:
当p是可变对象时,它可以不同。在那种情况下,就地*=
可以修改原始对象,而不是创建一个新对象。比较q
以下每种情况会发生什么:
>>> p = q = [2]
>>> p *= 5
>>> p
[2, 2, 2, 2, 2]
>>> q
[2, 2, 2, 2, 2]
>>> p = q = [2]
>>> p = p * 5
>>> p
[2, 2, 2, 2, 2]
>>> q
[2]
如果p
是带有副作用的复杂表达式时,if也可以不同,因为就地版本仅计算一次子表达式。因此,例如:
aList[randint(0, 5)] *= 3
与以下内容不同:
aList[randint(0, 5)] = aList[randint(0, 5)] * 3
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句