-1
这可能是由于关键字简单的问题,导致对功能本身,而不是澄清以下是否是这样的解释:Python的范围功能 - 停止步骤是功能
当使用范围功能循环,具有作为停止步骤的功能,例如,
for item in range(some_function()):
#do something
是函数调用存储在每个步骤中使用还是评估的结果?
我会想象它的前者,但它激动,我无法证实。
这可能是由于关键字简单的问题,导致对功能本身,而不是澄清以下是否是这样的解释:Python的范围功能 - 停止步骤是功能
当使用范围功能循环,具有作为停止步骤的功能,例如,
for item in range(some_function()):
#do something
是函数调用存储在每个步骤中使用还是评估的结果?
我会想象它的前者,但它激动,我无法证实。
这里没有什么特别的关于range
。行为在the language reference中定义。
表达式列表被计算一次
“表达列表”是后的部分的in
(即,range(some_function())
在你的例子)。不管在那里,只评估一次。
您是否检查过[版本2](https://docs.python.org/2/library/functions.html#range)和[版本3]的python文档(https://docs.python.org /3/library/functions.html#func-range)?你应该指定你正在使用的Python版本。 – ray
我确实花了一些时间,我只是在错误的地方看。 doc for the [for](https://docs.python.org/2/reference/compound_stmts.html#the-for-statement)声明应该是我看上去像@BrenBarn所示的地方。 – Legato
FWIW,你可以很容易地测试这样的东西。例如,'def f():print('in f');返回5'。现在看看为什么'我在范围内(f()):'做。 –