-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()):'做。 –