2
私の関数の1つは外部変数を使用しますが、この関数を使用すると外部変数が変更されます。次に例を示します。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]であると思います 私は解決策の1つがこのように閉鎖を使用していることを知っています:
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
ありがとう、私はそれを見ました。それは良い答えかもしれません。しかし、あなたの答えは私のために十分です。 –