2015-11-02 50 views
-1

这可能是由于关键字简单的问题,导致对功能本身,而不是澄清以下是否是这样的解释:Python的范围功能 - 停止步骤是功能

当使用范围功能循环,具有作为停止步骤的功能,例如,

for item in range(some_function()): 
    #do something 

是函数调用存储在每个步骤中使用还是评估的结果?

我会想象它的前者,但它激动,我无法证实。

+0

您是否检查过[版本2](https://docs.python.org/2/library/functions.html#range)和[版本3]的python文档(https://docs.python.org /3/library/functions.html#func-range)?你应该指定你正在使用的Python版本。 – ray

+0

我确实花了一些时间,我只是在错误的地方看。 doc for the [for](https://docs.python.org/2/reference/compound_stmts.html#the-for-statement)声明应该是我看上去像@BrenBarn所示的地方。 – Legato

+0

FWIW,你可以很容易地测试这样的东西。例如,'def f():print('in f');返回5'。现在看看为什么'我在范围内(f()):'做。 –

回答

4

这里没有什么特别的关于range。行为在the language reference中定义。

表达式列表被计算一次

“表达列表”是后的部分的in(即,range(some_function())在你的例子)。不管在那里,只评估一次。