ホームページ >バックエンド開発 >Python チュートリアル >Python が「UnboundLocalError」をスローするのはなぜですか?それを修正するにはどうすればよいですか?

Python が「UnboundLocalError」をスローするのはなぜですか?それを修正するにはどうすればよいですか?

Mary-Kate Olsen
Mary-Kate Olsenオリジナル
2024-11-25 07:37:21988ブラウズ

Why Does Python Throw an

エラー: 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 サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。