[英]For loop in python initializes an outer variable on each iteration
我無法理解為什么以下代碼會給出不同的結果:
from datetime import datetime
def foo():
return {datetime.now() : True}
a = {}
a.update(foo())
a.update(foo())
a.update(foo())
和:
a = {}
for i in xrange(3):
a.update(foo())
在前a
包含三個元素結束,而在后a
只有一個元素結束(從最后一次迭代)。
只是你的運氣。 第二個代碼可能在一毫秒(或微秒,取決於您的操作系統)中執行,並提供三個相同的日期時間,首先是不太可能這樣做(在您的系統/您執行代碼的方式)。 繼續嘗試,你最終可能會有兩個元素。 不要編寫依賴於運氣的代碼。
你最終得到的元素數量將取決於foo
Python在datetime.now()
的粒度內執行的調用次數。
如果你在交互式控制台中運行它,那么在提示符處執行的語句之間,控制台將執行內務處理(例如,顯示>>>
提示符),這將顯着延遲下一個語句,而對於for
循環,循環將是在控制台執行任何操作之前完整執行。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.