Pythonでは、変数のスコープはその変数がアクセスできる範囲を指します。変数のスコープは、変数がどこで作成されたかによって異なります。具体的には、「関数内」で作成された変数と「関数外」で作成された変数の2つがあります。

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

Pythonでは、関数内で変数を呼び出したとき、すでにグローバルで定義されていた場合はグローバル変数が使用されます。しかし、関数内で変数に代入を行った場合、その変数はローカルスコープとして扱われ、例外が発生する可能性があります。

global_var = "Global Variable"

def get_global():
    local_var = global_var
    return local_var

print(get_global())  # "Global Variable"が出力されます

上記の例では、get_global関数内でglobal_varを参照しています。このとき、global_varはグローバルスコープで定義されているため、問題なく参照できます。

しかし、以下のように関数内でグローバル変数に代入を行った場合、問題が発生します。

global_var = "Global Variable"

def get_global():
    local_var = global_var
    global_var = "Reset Local"  # ここでエラーが発生します
    return local_var

print(get_global())

この例では、get_global関数内でglobal_varに代入を行っています。この代入により、global_varはローカルスコープとして扱われ、その結果、local_var = global_varの行でエラーが発生します。

グローバル変数の明示的な使用

グローバル変数を関数内で使用する場合は、globalキーワードを使用して明示的にグローバル変数を使用することができます。

common_var = "Global Variable"

def get_global():
    global common_var
    common_var = "Local Variable"
    return common_var

print(get_global())  # "Local Variable"が出力されます
print(common_var)  # "Local Variable"が出力されます

この例では、get_global関数内でglobalキーワードを使用してcommon_varをグローバル変数として扱っています。その結果、関数内でcommon_varに代入を行ってもエラーが発生せず、グローバル変数の値が更新されます。

以上がPythonの変数スコープについての基本的な説明です。この知識を持っておくことで、変数の扱いに関するエラーを避けることができます。

投稿者 admin

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です