スコープの基本 | ローカル変数とグローバル変数 | Python本格超入門

現在作成中です。今後加筆修正してまいります。
スポンサーリンク

スポンサーリンク

スコープの基本

Pythonには変数の「スコープ」という概念があり、変数がどの範囲で有効であるかを決定します。スコープには大きく分けて2つの種類があります:ローカル変数グローバル変数です。この記事では、スコープの基本的な概念と、変数の有効範囲について解説します。

ローカル変数とは?

ローカル変数とは、関数内で定義された変数で、その関数の中だけで有効です。関数が実行されるとローカル変数が生成され、関数の実行が終わるとローカル変数は破棄されます。次の例では、関数内で定義された変数xがローカル変数となります。


# ローカル変数の例
def my_function():
    x = 10  # ローカル変数
    print(x)

my_function()  # 出力: 10
print(x)  # エラー: xは関数外では存在しない
    

このコードでは、xは関数my_function内でのみ有効です。関数外でxを参照しようとするとエラーが発生します。

グローバル変数とは?

グローバル変数とは、関数の外で定義された変数で、プログラム全体で有効です。関数内でもグローバル変数を使用できますが、関数内でグローバル変数を変更するにはglobalキーワードを使う必要があります。次の例を見てみましょう。


# グローバル変数の例
x = 20  # グローバル変数

def my_function():
    global x
    x = 10  # グローバル変数を変更
    print(x)

my_function()  # 出力: 10
print(x)  # 出力: 10
    

この例では、globalキーワードを使って関数内でグローバル変数xを変更しています。globalを使わない場合、関数内のxはローカル変数として扱われ、グローバル変数は変更されません。

スコープの基本ルール

Pythonでは、変数のスコープに関して「LEGB」と呼ばれるルールが適用されます。LEGBは、次の4つのスコープを表します。

  • L: Local(ローカルスコープ) – 現在の関数内のスコープ
  • E: Enclosing(外側の関数のスコープ) – 関数の中にネストされた関数がある場合のスコープ
  • G: Global(グローバルスコープ) – モジュール全体のスコープ
  • B: Built-in(ビルトインスコープ) – Pythonの組み込み関数のスコープ

これらのルールに従って、Pythonは変数を解決します。最も内側のスコープから外側のスコープに向かって変数が探されます。

スコープの違いによる挙動の違い

ローカル変数とグローバル変数の違いにより、同じ変数名でもスコープによって異なる挙動を示します。次の例では、同じ変数名valueをローカルスコープとグローバルスコープで使用しています。


# スコープによる変数の挙動の違い
value = 100  # グローバル変数

def my_function():
    value = 10  # ローカル変数
    print("ローカル変数:", value)

my_function()  # 出力: ローカル変数: 10
print("グローバル変数:", value)  # 出力: グローバル変数: 100
    

この例では、関数内でvalueというローカル変数が定義されており、グローバル変数とは異なる値を持っています。

スコープに関するまとめ

変数の種類 定義場所 有効範囲
ローカル変数 関数内 関数の内部
グローバル変数 関数外 プログラム全体

まとめ

Pythonにおける変数のスコープは、コードの設計と実行において非常に重要な概念です。ローカル変数は関数内でのみ有効で、グローバル変数はプログラム全体で使用されます。関数内でグローバル変数を変更する場合はglobalキーワードが必要です。スコープのルールを理解することで、変数の扱いが正確になり、バグの少ないコードを記述できるようになります。

Amazonロゴ
   
ad.価格範囲を指定して商品を探せます。セールで助かる便利ツール
本格超入門
スポンサーリンク
このページをメモ、または、シェア