gpt4 book ai didi

python - python解释器是否重用结果以提高效率?

转载 作者:行者123 更新时间:2023-11-28 22:50:54 25 4
gpt4 key购买 nike

#L is a very large list
A = [x/sum(L) for x in L]

当解释器计算这个时,sum(L)会被计算多少次?一次,还是每个元素一次?

最佳答案

列表理解为每次迭代执行表达式

sum(L) 对 L 中的每个 x 执行。在列表理解之外计算一次:

s = sum(L)
A = [x/s for x in L]

Python 无法知道 sum(L) 的结果是否稳定,也无法为您优化调用。

sum() 可以重新绑定(bind)到返回随机值的不同函数。 L 中的元素可以实现产生副作用的__add__ 方法;内置的 sum() 会调用这些。 L 本身可以实现一个自定义的 __iter__ 方法,它会在您迭代时就地改变列表,从而影响列表理解 sum() 调用。这些钩子(Hook)中的任何一个都可以重新绑定(bind) sum 或为 x 元素提供一个 __div__ 方法来改变 sum 等。

换句话说,Python 过于动态,无法准确预测表达式结果。

关于python - python解释器是否重用结果以提高效率?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22281655/

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