ホームページ >バックエンド開発 >Python チュートリアル >関数内でグローバル変数を変更するときに Python が「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 サイトの他の関連記事を参照してください。