Python入門 グローバル変数とローカル変数(動画あり)

Pythonのグローバル変数とローカル変数

Pythonでは関数の呼び出しされるごとに、実引数と関数内の変数はローカルスコープに存在します。
また、関数の外で宣言された変数はグローバルスコープに存在することになります。グローバルスコープはプログラムが実行されると生成されます。
ローカルスコープにある変数はローカル変数、グローバルスコープにある変数はグローバル変数といいます。

グローバル変数は関数の中からも、関数の外からでもどこからでも使うことができます。

関数内でグローバル変数を使う例

# 関数でグローバル変数を呼び出す方法
num = 1
def test():
  print(num)
  
print(num)
test()
print(num)

結果
1
1
1

ローカル変数は関数内だけでしか使用できません。

ローカル変数とグローバル変数の使われ方の例

# ローカル変数とグローバル変数の使われ方
num = 1
def test():
  num = 100
  print(num)
  
print(num)
test()
print(num)

結果
1
100
1

関数内でグローバル変数と同じ名前のローカル変数を宣言すると、
関数内ではローカル変数が優先して使用されます。

関数内でグローバル変数を使用して、その後に同じ名前のローカル変数を宣言するとエラーになります。

同じ名前のグローバル変数とローカル変数が混在してエラーになる例

# 関数でグローバル変数を呼び出す方法
num = 1
def test():
  print(num)
  num = 100
  print(num)
  
print(num)
test()
print(num)

結果
1
—————————————————————————
UnboundLocalError Traceback (most recent call last)
in ()
6
7 print(num)
—-> 8 test()
9 print(num)

in test()
1 num = 1
2 def test():
—-> 3 print(num)
4 num = 100
5 print(num)

UnboundLocalError: local variable ‘num’ referenced before assignment

ローカル変数とグローバル変数の名前が同じで、明示的にグローバル変数を使う方法は、global キーワードを使います。

関数でグローバル変数を呼び出す例

# 関数でグローバル変数を呼び出す方法
num = 1
def test():
  global num
  print(num)
  num = 100
  print(num)
  
print(num)
test()

結果
1
1
100
100

ローカル変数を関数の外で呼び出すことはできません。

# ローカル変数を関数の外で呼び出した場合
num = 1
def test():
  local_num = 100
  print(local_num)
  
print(num)
test()
print(local_num) #エラー

結果

100
—————————————————————————
NameError Traceback (most recent call last)
in ()
6 print(num)
7 test()
—-> 8 print(local_num) #エラー

NameError: name ‘local_num’ is not defined

参考になった書籍

プログラミングを少しでも経験がありPython の文法を学習する場合は、「入門 Python 3」が良いと思います。長く使えます。

「退屈なことはPython にやらせよう」はオブジェクト指向の解説がないです。代わりにPythonを使った便利な実例が初心者には嬉しい内容です。正規表現から、簡単なスクレイピング 、画像操作などあります。ただし、中級者以上には少し物足りないかもしれません。

Pythonサンプルのダウンロード

ここでダウンロードする「function2.ipynb」ファイルは、このPython動画で使用したものです。

function2.ipynb

Python入門一覧