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はローカル変数として扱われていることがわかります。

Python