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

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

Mary-Kate Olsen
リリース: 2024-12-06 15:37:11
オリジナル
616 人が閲覧しました

Why Do I Get an UnboundLocalError in Python 3, and How Can I Fix It?

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

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