不确定这是否被称为发电机,工厂或其他东西,但它没有按照我的预期行事。
d = {}
for i in range(10):
def func():
print i
d[i]=func
print d
for f in d:
d[f]()
输出:
9
9
9
9
9
9
9
9
9
9
但我在期待:
0
1
2
3
4
5
6
7
8
9
我想在for循环的每一步存储func的当前状态,但似乎字典正在获取函数的引用(?)。我该如何阻止它?
此外,如果它正在存储对该功能的引用,我会认为这打印出来的覆盖'但它仍会打印所有9。那是为什么?
d = {}
for i in range(10):
def func():
print i
d[i]=func
print d
def func():
print 'overridden'
for f in d:
d[f]()
谢谢!