最近、Pythonの勉強を始めた。Pythonを勉強していくなかで、これまで使ってきた言語 (JavaやPerlやC) と違う点について、少しずつメモしていこうと思う。
まずは、Pythonにおけるグローバル変数の変更について。
Pythonで関数内からグローバル変数を変更する際は、関数内で「global グローバル変数名」として宣言する必要がある。関数内からグローバル変数を参照するだけなら、「global」を付ける必要はない。以下は、そのテストプログラム。
# グローバル変数 var = 'aaa' def func0(): print(var) # aaa def func1(): var = 'bbb' def func2(): global var var = 'ccc' func0() func1() print(var) # aaa func2() print(var) # ccc
func2 内では、「global」を付けているので、グローバル変数 var を変更している。func1 内では、「global」を付けていないので、ローカル変数の var に対して操作していることになる。
Pythonでは、グローバル変数の意図しない変更でバグを作り込まないように、このような言語仕様になっていると考えている。