О закрытии Python

Ниже приведен пример, который я получил из чьего-то блога о закрытии Python. Я запускаю его в python 2.7 и получаю результат, отличный от ожидаемого.

flist = []

for i in xrange(3):
    def func(x):
        return x*i
    flist.append(func)

for f in flist:
    print f(2)

Мой ожидаемый результат: :0, 2, 4
Но на выходе :4, 4, 4
Есть ли кто-нибудь, кто может помочь объяснить это?
Заранее спасибо.

7
задан Alex.Zhang 10 July 2012 в 07:28
поделиться