比如这段代码:
def count():
fs=[]
for i in range(1,4):
def f():
return i*i
fs.append(f)
return fs
f1,f2,f3=count()
print(f1())
print(f2())
print(f3())
输出的结果都是9,那么如何改代码才能输出1 4 9那?(还是使用闭包的方式)
def count():
fs = []
for i in range(1, 4):
fs.append(i*i)
return fs
f = count()
print(f)
# RESULT
# [1, 4, 9]
这样肯定是可以的,但是就想使用闭包的方式来实现...
def count():
fs = [];
def func1(i):
def func2():
return i * i;
return func2;
for i in range(1, 4):
fs.append( func1(i) );
return fs;
f1, f2, f3 = count();
print(f1())
print(f2())
print(f3())
输出1 4 9
虽然这样代码实际开发不会写,但是作为了解闭包还是有用的吧……