私はこのようなコードを手に入れました:
foo = None
def outer():
global foo
foo = 0
def make_id():
global foo
foo += 1
return foo
id1 = make_id() # id = 1
id2 = make_id() # id = 2
id3 = make_id() # ...
foo
最も外側のスコープで定義したのは醜いので、outer
機能しているだけにしておきたいと思います。私が正しく理解しているように、Python3ではこれはによって行われnonlocal
ます。私が欲しいもののためのより良い方法はありますか?私は宣言して割り当てfoo
、そして多分それをouter
デルケアしたいと思います:global
inner
def outer():
foo = 0
def make_id():
global foo
foo += 1 # (A)
return foo
id1 = make_id() # id = 1
id2 = make_id() # id = 2
id3 = make_id() # ...
(A)動作せずfoo
、最も外側のスコープで検索されているようです。