Python函数生成器(?),工厂(?)的行为不符合预期

时间:2016-10-15 03:39:41

标签: python generator factory

不确定这是否被称为发电机,工厂或其他东西,但它没有按照我的预期行事。

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]()

谢谢!

0 个答案:

没有答案