Python入門:ローカル変数とグローバル変数
ローカル変数
関数内で定義された変数や仮引数は関数のブロック外では使えません。このような変数をローカル変数といいます。
また、変数を定義するとローカル変数になる部分のことをローカルスコープといいます。
def func() :
num = 3
func()
print(num)
Traceback (most recent call last):
File "C:/○○/○○.py", line 4, in
print(num)
^^^
NameError: name 'num' is not defined. Did you mean: 'sum'?
Pythonでは、ifブロックやwhileブロックはローカルスコープにはなりません。
if True :
num1=1
while True :
num2 = 2
break
print(num1)
print(num2)
1
2
グローバル変数
関数ブロックの外で定義された変数はグローバル変数といい、どこでも利用することができます。
また、変数を定義するとグローバル変数になる部分をモジュールスコープといいます。
def func() :
print(num)
num = 0
func()
0
ちなみに、グローバル変数をローカルスコープ内で再代入した場合は、次のコードのようになります。
def func() :
num = 3
print(num)
num = 0
func()
print(num)
上のプログラムのように、グローバル変数がローカルスコープ内で再代入された場合、ローカルスコープ内では、再代入されたときの値が保持されます。 しかし、モジュールスコープでは、再代入された値は保持されず、再代入される前の値を参照します。
実行結果
3
0
グローバル変数の定義
ローカルスコープ内で、グローバル変数を定義したい場合は、次のようなコードを書きます。
def func() :
global num
num = 1
func()
print(num)
1
また、globalを使うとモジュールスコープ、ローカルスコープ関係なしにグローバル変数を再代入できます。
def func() :
global num
num = 1
num = 0
func()
print(num)
1
最後に
今回は、Pythonでのローカル変数、グローバル変数について解説しました。
もっとPythonを学びたい!という方はこちらの記事でPythonの基本的な構文を学習することが出来ますのでぜひ立ち寄ってみてください!