「労働者が自分の仕事をうまくやりたいなら、まず自分の道具を研ぎ澄まさなければなりません。」 - 孔子、「論語。陸霊公」
表紙 > プログラミング > Python の入れ子関数から非ローカル変数にアクセスする方法

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

2024 年 11 月 8 日に公開
ブラウズ:939

How to Access Nonlocal Variables from Nested Functions in Python?

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

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

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

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

Python 3 以降では、nonlocal キーワードを使用すると、入れ子になった関数内で非ローカル変数を再バインドできます。

def outer():
    ctr = 0

    def inner():
        nonlocal ctr
        ctr  = 1

    inner()

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

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

ctr = [0]

def inner():
    ctr[0]  = 1

3.グローバル変数の使用 (推奨されません):

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

def outer():
    global ctr
    ctr = 0

    def inner():
        ctr  = 1

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

リリースステートメント この記事は次の場所に転載されています: 1729507041 侵害がある場合は、[email protected] に連絡して削除してください。
最新のチュートリアル もっと>

免責事項: 提供されるすべてのリソースの一部はインターネットからのものです。お客様の著作権またはその他の権利および利益の侵害がある場合は、詳細な理由を説明し、著作権または権利および利益の証拠を提出して、電子メール [email protected] に送信してください。 できるだけ早く対応させていただきます。

Copyright© 2022 湘ICP备2022001581号-3