ホームページ >バックエンド開発 >Python チュートリアル >Python 2.x クロージャに非ローカル キーワードがないことを回避するにはどうすればよいですか?

Python 2.x クロージャに非ローカル キーワードがないことを回避するにはどうすればよいですか?

Linda Hamilton
Linda Hamiltonオリジナル
2024-10-22 08:35:30977ブラウズ

How to Workaround the Absence of the nonlocal Keyword in Python 2.x Closures?

Python 2.x の nonlocal キーワード: クロージャ実装の回避策

Python 2.6 の nonlocal キーワード。これにより、関数のネストが許可されます。囲んでいる関数で定義された変数を変更する他の関数 (クロージャ) は使用できません。

非ローカルの不在を克服する:

Python 2 のクロージャ内の非ローカル変数にアクセスするには.x の場合は回避策が必要です。開発者は、非ローカル キーワードを使用する代わりに、ディクショナリを作成して必要なデータを保存できます。

内部関数はこのディクショナリにアクセスし、その内容を変更できます。そうすることで、辞書が表す非ローカル変数と効果的に対話します。

例:

次のコードを使用して、Python 2.6 でクロージャを実装しようとしていると考えてみましょう。非ローカル キーワード:

<code class="python">def outer():
    x = 0
    def inner():
        nonlocal x
        x += 1
        return x
    return inner</code>

非ローカル キーワードは Python 2.6 では認識されないため、このコードはエラーになります。

回避策を使用してこのクロージャを実装するには、コードを変更します。次のようになります。

<code class="python">def outer():
    data = {'x': 0}
    def inner():
        data['x'] += 1
        return data['x']
    return inner</code>

この場合、データ ディクショナリには x の値が格納され、内部関数はその内容を変更します。これにより、クロージャが非ローカル変数 x と対話できるようになります。

この回避策を採用することで、開発者は Python 2.x クロージャの非ローカル変数にアクセスして変更できるようになり、より複雑で柔軟なコードを実装できるようになります。

以上がPython 2.x クロージャに非ローカル キーワードがないことを回避するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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