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

DDD
リリース: 2024-10-21 18:38:29
オリジナル
835 人が閲覧しました

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 サイトの他の関連記事を参照してください。

ソース:php
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート
私たちについて 免責事項 Sitemap
PHP中国語ウェブサイト:福祉オンライン PHP トレーニング,PHP 学習者の迅速な成長を支援します!