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

Python で UnboundLocalError が発生するのはなぜですか?それを修正するにはどうすればよいですか?

Linda Hamilton
リリース: 2024-12-01 16:56:11
オリジナル
582 人が閲覧しました

Why Does Python Raise an UnboundLocalError, and How Can I Fix It?

Python の UnboundLocalError を理解する: 変数スコープの問題の解決

関数内の変数に値を割り当てるとき、変数がアクセスされると Python は UnboundLocalError を発生させる可能性があります関数内でローカルに定義される前に。このエラーの背後にある理由を詳しく調べ、解決策を検討してみましょう。

このエラーにつながる一般的なシナリオの 1 つは、変数が関数内の代入ステートメントで宣言され、同じ名前のグローバル変数を効果的にシャドウしている場合です。次のコード スニペットを考えてみましょう:

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 を使用しようとしています。ただし、関数内の行 Var1 -= 1 は、ローカル変数 Var1 に新しい値を代入し、グローバル変数を覆い隠します。 Python でこれが発生すると、UnboundLocalError が発生します。

エラーの解決

この問題を解決する 1 つの方法は、関数内で Python のグローバル キーワードを使用することです。このキーワードは、関数内で参照される変数が個別のローカル変数ではなくグローバル変数であることを Python に明示的に通知します。

def function():
    global Var1, Var2  # Declare global variables inside 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
ログイン後にコピー

global キーワードを使用すると、関数はグローバル変数 Var1 と Var2 にアクセスして変更できます。 .

考慮事項:

グローバル変数の使用は魅力的かもしれませんが、コードの保守とデバッグが困難になる可能性があるため、Python では通常は推奨されません。代わりに、変数を引数として関数に渡すか、必要に応じてクラス変数を利用することをお勧めします。

以上がPython で UnboundLocalError が発生するのはなぜですか?それを修正するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート