概要
Pythonの変数スコープについて、時々分からなくなるので、こちらに記載します。
変数スコープの種類
グローバル変数
- グローバル変数はローカル変数内外のどの範囲からもアクセス可能
(①、②の出力を参照)
# coding: utf-8
GLOBAL = "GGG" # グローバル変数定義
def gfunc(): # 任意の関数を定義
print(GLOBAL)
gfunc() # 関数内のprint(GLOBAL)を出力 ①
print(GLOBAL) # グローバル変数でのprint(GLOBAL)を出力②
ローカル変数
- ローカル変数は定義した関数外の箇所では使用できない。
(③の出力を参照)
# coding: utf-8
GLOBAL = "GGG"
def lfunc(): # 任意の関数を定義
LOACL = 'LLL' # ローカル変数定義
print(LOACL) # lfunc関数の内容は上記のLOCAL変数内文字列(LLL)を出力する内容
lfunc()# # lfunc関数を実行して、文字列 = LLLを出力
print(GLOBAL) # グローバル変数でのprint(GLOBAL)を出力
print(LOACL) # 関数外でLOCAL変数にアクセス -> エラーになる!!!③
- その他
- local変数を明示的にprintする事も可能
# coding: utf-8
GLOBAL = "GGG"
def lfunc(): # 任意の関数を定義
LOACL = 'LLL' # ローカル変数定義
print(LOACL) # lfunc関数の内容は上記のLOCAL変数内文字列(LLL)を出力する内容
print(locals())
lfunc() # lfunc関数を実行して、文字列 = LLLを出力。また、print(locals())でlocal変数は何が代入されているかをprintする ※ここでは{'LOACL': 'LLL'}と出力される
print(GLOBAL) # グローバル変数でのprint(GLOBAL)を出力
参照ドキュメント