2015-11-02 85 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())在你的例子)。不管在那裏,只評估一次。