ホームページ >バックエンド開発 >Python チュートリアル >Python 関数内の `counter = 1` によって `UnboundLocalError` が発生するのはなぜですか?
Python クロージャで説明された UnboundLocalError
質問で説明されている状況は、変数スコープとして知られる Python の基本的な概念を中心に展開しています。明示的な変数宣言を持つ言語とは異なり、Python は割り当てに基づいて変数のスコープを決定します。
次のコードを考えてみましょう:
counter = 0 def increment(): counter += 1 increment()
このコードでは UnboundLocalError が発生します。なぜですか?
Python では、関数内の代入により、変数がその関数に対してローカルであるとマークされます。 increment() 関数の counter = 1 という行は、counter がローカル変数であることを意味します。ただし、この行はローカル変数が割り当てられる前にアクセスしようとするため、UnboundLocalError が発生します。
この問題を回避するには、いくつかのオプションがあります。
counter = 0 def increment(): global counter counter += 1
def outer(): counter = 0 def inner(): nonlocal counter counter += 1
これらのテクニックを利用することで、ローカルを正しく操作できます。クロージャ内のグローバル変数を使用して、不要なエラーを回避します。
以上がPython 関数内の `counter = 1` によって `UnboundLocalError` が発生するのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。