PYTHON MEBY

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) は隠蔽されます。関数外ではグローバル変数の値が維持されます。

まとめ

グローバル変数とローカル変数のスコープを理解することで、プログラムの可読性と保守性を高めることができます。グローバル変数の使いすぎはバグの原因となるため、必要に応じてローカル変数を使用するようにしましょう。

関連記事