2
我的一个函数会使用外部变量,但是当我使用这个函数时外部变量会改变。这里有一个例子:在python中定义函数时锁定外部变量
func_list=[]
for i in range(0,6):
def func():
print(i)
func_list.append(func)
for j in range(0,6):
func_list[j]()
我希望输出[1,2,3,4,5,6],但实际输出为[6,6,6,6,6,6] 我所知道的一个解决方案是使用封闭,像这样:
func_list=[]
for i in range(0,6):
def create_func():
nonlocal i
number=i
def func():
print(number)
return func
func=create_func()
func_list.append(func)
for j in range(0,6):
func_list[j]()
此程序可输出[1,2,3,4,5,6]。但它看起来有点难看。它使用额外的4条,至少3条线来解决这个问题...是否有一些更简单的方法/函数装饰来解决这个问题?
谢谢。
谢谢,这就是我想要的。也许这是最好的解决方案。 –
@ X.Li你可以试试[这个更好的答案](http://stackoverflow.com/questions/3431676/creating-functions-in-a-loop#3431699)。我在回答这个问题后很快发现它。 – anonymoose
谢谢你,我看到了。这可能是一个很好的答案。但你的回答对我来说已经足够了。 –