グローバル変数
関数定義やクラス定義の外で宣言される変数のこと。
Pythonのグローバル変数は少々癖がある。
code:python
def func():
x = 2*a
print(a)
a = 2
func()
のように、グローバル宣言を行うことなく関数定義の外側で宣言された変数aを利用することができる。これを受けて
code:python
def func():
a = -2 #(1)
a = 2
func()
print(a) #(2)
とすると、(1)でグローバル変数aに-2を代入するので、(2)では-2が表示されると考えられる。
しかしながら、実際には(1)の代入文が実行されると、新たなローカル変数aが作られ-2が代入される。外部で作られた変数aはローカル変数aによって覆い隠されるのである。
その結果、(2)では2が表示される。
したがって、外部で宣言された変数をグローバル変数として利用したければ、
code:python
def func():
global a
a = -2
a = 2
func()
print(a)
のように、global文を用いて宣言を行う必要がある。
メソッド内でのグローバル変数
関数における場合と同様である。
code:python
class hoge:
def __init__(self):
global a
a = -2
a = 2
f1 = hoge()
print(a)
関連:ローカル変数 / インスタンス変数 / クラス変数 /