ホームページ >バックエンド開発 >Python チュートリアル >関数内のグローバル変数にアクセスすると、Python コードが「UnboundLocalError」をスローするのはなぜですか?

関数内のグローバル変数にアクセスすると、Python コードが「UnboundLocalError」をスローするのはなぜですか?

Mary-Kate Olsen
Mary-Kate Olsenオリジナル
2024-12-23 03:35:14842ブラウズ

Why Does My Python Code Throw an

アンバウンド ローカル エラー: グローバル スコープをシャドウするローカル変数 'c​​'

Python では、関数内の変数の代入規則を理解することが重要です。潜在的なエラーを防ぎます。 「UnboundLocalError」に直面した場合、関数に割り当てられた変数がグローバル変数を覆い隠そうとしているかどうかを調査することが重要です。

次のコードを検討してください:

a, b, c = (1, 2, 3)

def test():
    print(a)
    print(b)
    print(c)
    c += 1

このコードを実行するときを実行すると、「print(c)」行に起因するエラーが発生します。このエラー メッセージは通常、test() 関数のローカル スコープ内に "c" 変数が割り当てられていないことを示します。

このエラーを解決するには、Python が関数内の変数を場所に応じて異なる方法で扱うことを理解する必要があります。彼らは割り当てられています。関数内の変数に値を代入しようとすると、その変数はローカル変数になります。ただし、このコードでは、「c」をグローバルのままにするつもりです。

test() 関数内の「c」変数がグローバル変数「c」を参照することを宣言するには、「」を明示的に使用する必要があります。関数の先頭に global" キーワードを追加します:

def test():
    global c
    print(a)
    print(b)
    print(c)
    c += 1

"global c" を追加すると、Python は、ローカル変数ではなくグローバル "c" 変数を操作するつもりであることを認識します。これにより、グローバル "c" 変数を期待どおりに出力および変更できるようになります。

Python 3 で導入された新しい機能として、"global c" の代わりに "nonlocal c" を使用して、最も近い囲み変数を参照できます。 「c」変数を持つ関数スコープ。ただし、日常の Python コーディングでは「非ローカル」を使用することは一般的ではないことに注意してください。

以上が関数内のグローバル変数にアクセスすると、Python コードが「UnboundLocalError」をスローするのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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