ホームページ >バックエンド開発 >Python チュートリアル >Python が「UnboundLocalError」をスローするのはなぜですか?それを修正するにはどうすればよいですか?
エラー: Python の「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()
このコードは、関数 function() の外側で 2 つの変数 Var1 と Var2 を定義しています。関数内で Var1 を操作しようとしていますが、これは問題ありません。ただし、関数のスコープ内で初期化せずに Var1 にアクセスすると問題が発生します。
グローバル変数を使用した解決策:
この問題を解決するには、Var1 を次のように宣言します。関数内のグローバル変数。これにより、関数内に新しいローカル変数を作成するのではなく、関数の外で定義された Var1 を使用するように Python に指示されます。これを実現するには、関数の先頭に次の行を追加します。
global Var1
代替解決策: 非ローカル変数を使用する:
Python 3 では、非ローカル ステートメントが導入されています。これにより、囲んでいるスコープ内で定義された変数を変更できます。 Var1 をグローバル変数として宣言する代わりに、関数内で次のコードを使用できます。
nonlocal Var1 Var1 -= 1
結論:
を参照しようとすると、UnboundLocalError が発生します。初期化または定義されていないローカル変数。これを修正するには、変数をグローバルとして宣言するか、nonlocal キーワードを使用して、外側のスコープで定義された変数にアクセスします。
以上がPython が「UnboundLocalError」をスローするのはなぜですか?それを修正するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。