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

関数内でグローバル変数を変更するときに Python が「UnboundLocalError」をスローするのはなぜですか?

Linda Hamilton
リリース: 2024-12-24 16:47:13
オリジナル
847 人が閲覧しました

Why Does Python Throw an `UnboundLocalError` When Modifying a Global Variable Inside a Function?

UnboundLocalError: 変数の割り当てがグローバル宣言よりも優先されます

Python で UnboundLocalError が発生した場合、グローバル宣言よりも変数の割り当てが優先されることを理解することが重要です。提供されたコードを使用して詳細を調べてみましょう:

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

def test():
    print(a)
    print(b)
    print(c)
    c += 1
test()
ログイン後にコピー

エラーを調べる前に、'a' と 'b' の正常な出力に対処しましょう。これらの変数については、'test()' 関数内に割り当てがないため、Python はそれらをグローバル変数として扱い、外側のスコープから値を取得します。

ただし、値を 'c' 内で 'c' に割り当てる場合は、関数 ('c = 1') を使用すると、Python は 'c' という名前のローカル変数を作成します。このローカル変数はグローバル 'c' を覆い隠し、関数内でのその後の 'c' への参照はローカル バージョンを参照します。したがって、行 'print(c)' が実行されると、割り当てられていないローカル変数を出力しようとし、結果として 'UnboundLocalError' が発生します。

この問題に対処するには、グローバル変数の使用を明示的に宣言できます。最初の行として「global c」を追加して、「test()」関数内の「c」変数を追加します。あるいは、Python 3 では、'nonlocal c' を使用して、'c' という名前の変数を含む最も近い囲み関数スコープにアクセスできます。

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

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