以下python代码结果是4 4 4,令人惊讶。

flist = []

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

for f in flist:
    print f(2)

主要是因为func里面的i的值是变化的,所以在for i in xrange(3)执行完,flist里面所有func里的i都是指向2的。