Python

Python グローバル変数とglobal宣言

スコープ内の変数へアクセスするため、以下の場合、関数の外であっても、スコープに変数xが存在するため、値を取得できる。

x = 42

def f():
    print(x) # 42
 
f()

以下のように、スコープ内に同じ名前がある場合はどうなるだろうか。

x = 42

def f2():
    x = 0
    print(x) # 0
 
f2() # 関数内のxの値が更新される
print(x) # 42

f2()内でxに0を代入しているが、関数の外のx(42が入っている)には影響を与えない。

f2()関数内で、ローカルな変数として宣言、代入されるためだ。

関数の外のx = 42の x はグローバル変数と呼ばれる。

もし、関数内からグローバル変数の値を更新したい場合は以下のようにする。

x = 42

def f3():
    global x
    x = 0
    print(x) # 0
 
f3() # 関数内のxの値が更新される
print(x) # 0

global x と宣言することで、f3()関数内の x がグローバル変数を参照する。