Python - Variable Scope



ローカル->Enclost->グローバル->Built-inは、プログラムを実行するときにPythonがプログラムを中断する論理です.
次の簡単な例はScopeを示します.
結果はね.
name = 'g'

def main():
    def a():
        name = 'a'
        
    def b():        
        nonlocal name
        name = 'b'
        
    def c():
        global name
        name = 'd'
       
    name = 'hello'
    
    a()
    print('a ' + name)
    b()
    print('b ' + name)
    c()
    print('c ' + name)
    

print('g ' + name)
main()
print('main ' + name)
print('g ' + name)

if __name__ == "__main__":
    main()
質問1:出力上の結果は?
質問2:コメントがローカルでない場合の結果は?
**ヒント
  • nonlocal:ローカルで最も近い親バインド変数ではなく、
  • を参照
  • global:グローバル変数
  • を使用
    **結果
    g g
    a hello
    b b
    c b
    main d
    g d
    a hello
    b b
    c b