一般に、関数本体の閉鎖は、メイン関数呼び出しので、ループ変数の端部は、一般的に実行された後、戻り値を行い、ループ変数を回避することです。
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(),f2(),f3())
- 結果は1,4,9を返すことが期待されるが、結果は実際に返される9,9,9
- その理由は、count()関数は、3つの機能を返す場合、この変数の値は3 Iとなっている3つの機能を参照していることです
大きな箱 の閉鎖機能は、ループ変数を使用してどのように「タイトル=」溶液A「>ソリューション
- 方法:この問題は機能するので、私は関数定義に得ることができる場合、問題が解決することができ、外側の変数iを取得するために実行したときのみということです。関数fに(M = 1)Fの定義には、デフォルトのパラメータは、入力パラメータ値定義関数なしで正確に行うことができると私は機能を実行して取得する()、関数fは、M * Mまでの値を返します。
コードの変更:
DEFカウント():
FS = []
の範囲(1、4)iについて:def f(m = i): return m * m fs.append(f)
リターンFS
F1、F2、F3 = COUNT()
プリント(F1()、F2()、F3())
1,4,9