Python: 関数内でグローバル変数の値を変更したい場合
関数の外で名前が決められて値が代入される変数をグローバル変数、 関数の中で名前が決められて値が代入される変数をローカル変数といいます。
Pythonの関数内でグローバル変数の値を変更したい場合は「global」文を使います。 関数内で「global 変数名」と記述することでその変数をグローバル変数として 使うことができます。
次のサンプルコードでは、 関数「funcB」内で「global a」と記述し、 グローバル変数 aの値を10に変更しています。
a = 0 def funcB(): global a a = 10 print(a) funcB() print(a)
実行結果
10 10
実行結果から、 関数「funcB」内でグローバル変数 aの値が変更されていることがわかります。
「global 変数名」の記述がない場合
上のコードで「global 変数名」の記述が無い場合、
関数「funcB」内の変数 aはローカル変数として扱われます。
ですから関数内で変数 aの値を変更しても、
グローバル変数 aの値は変わりません。
その結果2つのprint(a)の結果は別々の値が表示されます。
「global 変数名」の記述がない場合のコードと実行結果は次の通りです。
a = 0 def funcB(): a = 10 print(a) funcB() # 10 print(a) # 0
実行結果
10 0
実行結果から 関数「funcB」内の変数 aはローカル変数として扱われていることがわかります。