Python 3: UnboundLocalError とその解決策を理解する
Python 3 で UnboundLocalError が発生した場合、ローカル変数が参照されていることを示します関数内で代入する前。この問題の原因と効果的な解決策を詳しく見てみましょう。
エラーを説明するには、次のコード スニペットを考えてみましょう。
Var1 = 1 Var2 = 0 def function(): if Var2 == 0 and Var1 > 0: print("Result 1") elif Var2 == 1 and Var1 > 0: print("Result 2") elif Var1 < 1: print("Result 3") Var1 -= 1 function()
このコードでは、グローバル変数 Var1 が定義されており、値 1 が割り当てられます。関数内では、条件ステートメントと演算 Var1 -= 1 で割り当てられる前に、変数 Var1 が参照されます。その結果、 UnboundLocalError は、Python が -= 演算を関数内の代入として解釈し、グローバル変数と同じ名前のローカル変数を作成するためです。
この問題を解決するには、一般にグローバル変数の使用は推奨されません。ただし、必要に応じて、次のコードに示すように、先頭に global キーワードを使用して、関数内でグローバル変数を明示的に宣言できます。
def function(): global Var1, Var2 ...
この行を含めることで、Python に次のことを指示します。グローバル スコープ内の Var1 と Var2 への参照をすべてアップし、UnboundLocalError を解決し、関数内でグローバル変数にアクセスできるようにします。
次のことが重要です。グローバル変数の使用は、混乱やコードのメンテナンスの問題を引き起こす可能性があるため、必要な状況に限定する必要があることに注意してください。 Python では、変数スコープを効果的に管理し、UnboundLocalErrors を回避するために、Python 3 で導入された非ローカル ステートメントなどのいくつかのメカニズムを提供しています。
以上がPython 3 で UnboundLocalError が発生するのはなぜですか? それを修正するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。