簡體   English   中英

對於python中的循環,在每次迭代時初始化一個外部變量

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM