ホームページ >バックエンド開発 >Python チュートリアル >Python の入れ子関数から非ローカル変数にアクセスする方法

Python の入れ子関数から非ローカル変数にアクセスする方法

DDD
DDDオリジナル
2024-10-21 18:38:29918ブラウズ

How to Access Nonlocal Variables from Nested Functions in Python?

入れ子関数スコープ内の非ローカル変数へのアクセス

Python では、入れ子関数スコープは、外側のスコープへのアクセスを提供します。ただし、入れ子になった関数内の囲みスコープ内の変数を変更しようとすると、UnboundLocalError が発生する可能性があります。

この問題に対処するには、いくつかのオプションがあります。

1。 「nonlocal」キーワードの使用 (Python 3 ):

Python 3 以降では、nonlocal キーワードを使用すると、ネストされた関数内で非ローカル変数を再バインドできます。

<code class="python">def outer():
    ctr = 0

    def inner():
        nonlocal ctr
        ctr += 1

    inner()</code>

2.リストによる間接アクセス (Python 2 および 3):

Python 2 と 3 の両方で、リストを使用して変数を保持し、ネストされた関数内で間接的に変数をインクリメントできます。

<code class="python">ctr = [0]

def inner():
    ctr[0] += 1</code>

3.グローバル変数の使用 (非推奨):

グローバルを使用すると、外側のスコープから変数にアクセスできるようになりますが、潜在的な競合やコードの可読性の問題のため、一般的には推奨されません。

<code class="python">def outer():
    global ctr
    ctr = 0

    def inner():
        ctr += 1</code>

適切なソリューションの選択は、特定の Python バージョンとコードの設計上の考慮事項によって異なります。

以上がPython の入れ子関数から非ローカル変数にアクセスする方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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