对于python中的循环,在每次迭代时初始化一个外部变量

tep*_*pez 2 python dictionary for-loop

我无法理解为什么以下代码会给出不同的结果:

from datetime import datetime

def foo():
    return {datetime.now() : True}

a = {}
a.update(foo())
a.update(foo())
a.update(foo())
Run Code Online (Sandbox Code Playgroud)

和:

a = {}
for i in xrange(3):
    a.update(foo())
Run Code Online (Sandbox Code Playgroud)

前者a最终有三个元素,而后者a最后只有一个元素(从最后一次迭代).

Pav*_*sov 5

只是你的运气.第二个代码可能在一毫秒(或微秒,取决于您的操作系统)中执行,并提供三个相同的日期时间,首先是不太可能这样做(在您的系统/您执行代码的方式).继续尝试,你最终可能会有两个元素.不要编写依赖于运气的代码.