· 

Pythonにおけるグローバル変数の取り扱い

(著)山たー

 関数外で宣言した変数を関数内から変更しようとしても、次のように書くとうまくいきません。

#case1
x = 0
def funcA():
    x = 1
    print(x)

funcA()  #1 
print(x) #0

 

ここで、関数内で"global x"と記述すれば、「このxはグローバル変数のxやぞ」という宣言となります。これを書くことで、関数内から変数の操作ができます。

#case2
x = 0
def funcA():
    global x
    x = 1
    print(x)

funcA()  #1
print(x) #1

 

もちろん"global"なので、複数の関数から呼び出すことが可能です。

#case3
x = 0
def funcA():
    global x
    x = 1

def funcB():
    global x
    x = 2

def funcC():
    global x
    print(x)
    
print(x) #0

funcA()
print(x) #1

funcB()
print(x) #2

funcC()  #2