以下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的。
以下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的。