ホームページ >バックエンド開発 >Python チュートリアル >Python 関数で「c = 1」によって「UnboundLocalError」が発生するのはなぜですか?

Python 関数で「c = 1」によって「UnboundLocalError」が発生するのはなぜですか?

Mary-Kate Olsen
Mary-Kate Olsenオリジナル
2024-12-23 01:11:14243ブラウズ

Why Does `c  = 1` Cause an `UnboundLocalError` in Python Functions?

UnboundLocalError: 代入のある関数の変数スコープ

UnboundLocalError は、変数が適切に定義またはインポートされずに関数内で使用されると発生します。この問題を解決するには、スコープの概念を理解することが重要です。

Python は関数内のローカル変数とグローバル変数を区別します。関数内で変数に値を代入すると、その変数はローカル変数になります。このローカル変数は、同じ名前のグローバル変数よりも優先されます。

この例では、c = 1 が実行されると、ローカル変数 c が作成されます。このローカル変数は、グローバル変数 c を値 3 でオーバーライドします。ただし、print(c) ステートメントは、その時点では未定義であるグローバル c にアクセスしようとしているため、UnboundLocalError が発生します。

この問題を解決するには, Python には 2 つのオプションがあります:

  • global: 関数内で変数をグローバルとして宣言する同じ名前のグローバル変数を参照していることを確認します。グローバル c を test() 関数の最初の行として配置すると、print(c) ステートメントはグローバル c を参照し、エラーが排除されます。
  • nonlocal (Python 3):非ローカル c を使用して、最も近い囲み関数スコープで定義された c 変数にアクセスします。このオプションは、クロージャに特に役立ちます。

以上がPython 関数で「c = 1」によって「UnboundLocalError」が発生するのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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