pythonのnonlocal
キーワードの振る舞いに戸惑っています。
したがって、標準的な例はこの質問def outerfoo():
のようになります。変数定義を含むブロックがありoutvar = 0
、内部outerfoo()
にdef innerfoo():
を含むブロックがあり、内部で行われることによってinの名前空間nonlocal outvar
の値を変更できるようにします。outvar
outerfoo():
innerfoo()
ここまでは順調ですね。ただし、次のコードはエラーで失敗しますSyntaxError
。
outvar = 0 #not in any function
def foo():
nonlocal outvar
outvar += 1
foo()
パーサーが検索していて、見つからない名前空間はoutvar
?