クロージャの UnboundLocalError: 分析
UnboundLocalError は、関数のコード内で使用される変数がローカル、グローバル、またはとして定義されていない場合に発生します。非ローカルブロックの一部。次のコードを考えてみましょう:
counter = 0 def increment(): counter += 1 increment()
このコードを実行すると UnboundLocalError が発生します。なぜこのようなことが起こるのでしょうか?
Python の変数スコープを理解する
Python は代入に基づいて変数スコープを動的に決定します。変数が関数内で割り当てられている場合、その変数はその関数に対してローカルであるとみなされます。この例では、increment() 内の割り当て counter = 1 は、カウンターをその関数に対してローカルとして暗黙的に定義します。
ローカル変数とグローバル変数
Python はローカル変数とグローバル変数を区別します。グローバル変数。グローバル変数はモジュール レベルで宣言され、プログラム全体からアクセスできます。一方、ローカル変数は関数内で作成され、それらの関数内にのみ存在します。
この場合、カウンターはグローバルに定義されていません。このエラーは、Python が counter の値が割り当てられる前に、increment() のローカル スコープから読み取ろうとするために発生します。したがって、UnboundLocalError が発生します。
エラーの解決
このエラーを解決するには、次のいずれかを実行できます:
以上が関数内の `counter = 1` が Python で `UnboundLocalError` を引き起こすのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。