Pythonは、かなり一般的な変数スコープを使用します。非ローカル変数は関数内に表示されます。
global
グローバルスコープ内の変数に割り当てる場合にのみ、キーワードが必要です。また、グローバルスコープと外部スコープの違いにも注意する必要があります。影響を考慮してください:
x = 'global'
def f():
x = 'local in f'
def g():
global x
x = 'assigned in g'
g()
print x
f()
上記のコードを実行すると、グローバルスコープがに設定されているlocal in f
間にが出力されます。x
'assigned in g'
Python 3の時点でnonlocal
、外部スコープから変数に割り当てることができるキーワードもあります。
x = 'global'
def f():
x = 'local in f'
def g():
nonlocal x
x = 'assigned in g'
return g
print(x)
f()
上記のコードを実行すると、グローバルスコープのg (which is the value of
x in local scope of
f()), while value of
x`に割り当てられた'が出力されます。
Pythonは字句(静的)スコープを使用するため、次のコードはグローバルスコープのを変更しないことにも注意してください。x
x = 'global'
def f():
x = 'local in f'
def g():
nonlocal x
x = 'assigned in g'
return g
g = f()
g()