Pythonで関数内でグローバル変数・ローカル変数を使う
この記事では、Pythonにおけるグローバル変数とローカル変数のスコープ、そして関数内での利用方法について解説します。グローバル変数とローカル変数の違い、それぞれの使用方法、そして潜在的な問題点について具体的な例を用いて説明します。
目次
グローバル変数とは?
グローバル変数は、関数定義の外で宣言された変数です。プログラム全体からアクセスできます。
global_var = 10
def print_global():
print(global_var)
print_global() # 出力: 10
上記の例では、`global_var` はグローバル変数であり、`print_global()` 関数内からでもアクセスして値を出力できます。
ローカル変数とは?
ローカル変数は、関数内またはブロック内(if文やfor文など)で宣言された変数です。その関数またはブロック内でのみ有効です。
def local_var_example():
local_var = 5
print(local_var) # 出力: 5
local_var_example()
# print(local_var) # NameError: name 'local_var' is not defined
上記の例では、`local_var` は `local_var_example()` 関数のローカル変数です。関数外からはアクセスできません。
関数内でグローバル変数を使う
関数内でグローバル変数を使用するには、`global`キーワードを使います。
global_var = 10
def modify_global():
global global_var
global_var = 20
print(global_var) # 出力: 20
modify_global()
print(global_var) # 出力: 20
`global`キーワードがないと、グローバル変数ではなく、ローカル変数として扱われます。
関数内でローカル変数を使う
関数内でローカル変数を使用する場合は、`global`キーワードは不要です。
def local_var_example():
local_var = 5
print(local_var)
local_var_example()
関数の内部で変数を定義すると、自動的にローカル変数になります。
グローバル変数とローカル変数の名前が同じ場合
グローバル変数とローカル変数の名前が同じ場合、関数内ではローカル変数が優先されます。
global_var = 10
def same_name():
global_var = 5
print(global_var) # 出力: 5
same_name()
print(global_var) # 出力: 10
関数 `same_name()` 内では、ローカル変数 `global_var` (値は5) が優先され、グローバル変数 `global_var` (値は10) は隠蔽されます。関数外ではグローバル変数の値が維持されます。
まとめ
グローバル変数とローカル変数のスコープを理解することで、プログラムの可読性と保守性を高めることができます。グローバル変数の使いすぎはバグの原因となるため、必要に応じてローカル変数を使用するようにしましょう。