ホームページ > バックエンド開発 > Python チュートリアル > Python 2.x での非ローカル変数へのアクセス: 制限を回避するには?

Python 2.x での非ローカル変数へのアクセス: 制限を回避するには?

Patricia Arquette
リリース: 2024-10-22 08:37:30
オリジナル
733 人が閲覧しました

Accessing Nonlocal Variables in Python 2.x: How to Work Around the Limitations?

Python 2.x のクロージャで非ローカル変数にアクセスする

Python 2.x には nonlocal キーワードがないため、非ローカル変数へのアクセスについて疑問が生じますクロージャで。内部関数は本質的に非ローカル変数を読み取ることができますが、それらの再バインドは許可されていません。

非ローカル変数にアクセスするための回避策

この制限にもかかわらず、次の回避策を採用できます。

  • 変更可能な非ローカル変数: 非ローカル変数は変更可能なオブジェクトを参照できます。内部関数はこれらのオブジェクトを変更し、非ローカル変数の値を間接的に効果的に変更できます。
  • 辞書ストレージ: 非ローカル データ要素を格納するための辞書を作成します。内部関数は、必要に応じてこれらの要素にアクセスし、変更できます。

辞書を使用した例

Wikipedia の例に基づいて、次のコード スニペットを考えてみましょう。

<code class="python">def outer():
    data = {'y': 0}

    def inner():
        data['y'] += 1
        return data['y']

    return inner

f = outer()
print(f(), f(), f())  # prints 1 2 3</code>
ログイン後にコピー

この例では、辞書データを使用して非ローカル変数 y を格納します。内部関数は、非ローカル変数の再バインドに関する制限に違反することなく、y の値をインクリメントし、更新された値を返すことができます。

以上がPython 2.x での非ローカル変数へのアクセス: 制限を回避するには?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート