2

我不明白为什么以下代码会给出不同的结果:

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只以一个元素结束(来自上一次迭代)。

4

2 回答 2

5

只是你的运气。第二个代码可能在一毫秒(或微秒,取决于您的操作系统)内执行,并给出三个相同的日期时间,第一个不太可能这样做(在您的系统/您执行代码的方式上)。继续尝试,你可能会得到两个元素。不要编写依赖于运气的代码。

于 2013-03-12T15:31:40.230 回答
3

最终得到的元素数量取决于foodatetime.now().

如果您在交互式控制台中运行它,那么在提示符处执行的语句之间,控制台将执行内务处理(例如,显示>>>提示符),这将显着延迟下一条语句,而对于for循环,循环将完整执行在控制台做任何事情之前。

于 2013-03-12T15:32:14.240 回答