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