関数内でグローバル変数に代入する場合はglobal宣言を使う必要がある
Pythonでは、関数内でグローバル変数に値を代入する場合はglobal宣言を使う必要がある。たとえば
a = "何か" def local(): a = "別の何か" print(a) local() print(a)
とした場合、local()は"別の何か"を出力する(関数内のaはローカル関数)が、グローバルにあるaの値は変わらないため関数外のprint(a)は"何か"を出力する。 グローバルのaを変更したい場合、関数内で
def local(): global a a = "別の何か"
という形にすると、local()を実行した時点でaに"別の何か"が代入され、関数外のprint(a)も"別の何か"を出力するようになる。