Python 2.x の nonlocal キーワード 質問する

Python 2.x の nonlocal キーワード 質問する

Python 2.6 でクロージャを実装しようとしており、非ローカル変数にアクセスする必要がありますが、このキーワードは Python 2.x では使用できないようです。これらのバージョンの Python でクロージャ内の非ローカル変数にアクセスするにはどうすればよいでしょうか?

ベストアンサー1

内部関数は読む2.xでは非ローカル変数は再バインドこれは面倒ですが、回避策があります。辞書を作成し、データを要素として保存するだけです。内部関数は禁止されていません。変異する非ローカル変数が参照するオブジェクト。

Wikipedia の例を使用する場合:

def outer():
    d = {'y' : 0}
    def inner():
        d['y'] += 1
        return d['y']
    return inner

f = outer()
print(f(), f(), f()) #prints 1 2 3

おすすめ記事