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
謝謝你,我看到了。這可能是一個很好的答案。但你的回答對我來說已經足夠了。 –