<一覧に戻る

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

Pythonにおける変数は、スコープ(有効範囲)によって「ローカル変数」と「グローバル変数」に分けられます。このセクションでは、両者について詳しく学び、サンプルコードを通じて理解を深めましょう。

ローカル変数

ローカル変数は、関数内で定義され、その関数内でのみ有効な変数です。関数が終了すると、ローカル変数は消失します。

サンプルコード

def greet(name):
    greeting = f"Hello, {name}!"  # greetingはローカル変数
    return greeting

print(greet("Alice"))  # Hello, Alice!
# print(greeting)  # これはエラーになります。greetingは関数内でのみ有効です。

解説

  • greet関数内で定義されたgreeting変数はローカル変数です。
  • greetinggreet関数内でのみアクセス可能で、関数の外では使用できません。

グローバル変数

グローバル変数は、スクリプト全体で有効な変数です。関数の外で定義され、どの関数からもアクセスが可能です。

サンプルコード

message = "Hello, World!"  # messageはグローバル変数

def print_message():
    print(message)  # グローバル変数にアクセス

print_message()  # Hello, World!

解説

  • message変数はグローバル変数であり、関数print_message内からもアクセスできます。
  • グローバル変数は、どの関数からも参照できるため、共有が簡単ですが、プログラムの大きさが増すと追跡が難しくなることがあります。

グローバル変数の変更

関数内でグローバル変数を変更したい場合は、globalキーワードを使います。

サンプルコード

counter = 0  # グローバル変数

def increment():
    global counter  # counterをグローバル変数として宣言
    counter += 1

increment()
increment()
print(counter)  # 2

解説

  • global counterを使用することで、関数内でcounterをグローバル変数として操作できます。
  • このようにすることで、関数が呼ばれるたびにグローバル変数の値を変更することが可能です。

ローカル変数とグローバル変数の混同に注意

ローカル変数とグローバル変数が同じ名前で定義されている場合、関数内ではローカル変数が優先されます。

サンプルコード

value = 10  # グローバル変数

def change_value():
    value = 5  # ローカル変数
    print("Inside function:", value)

change_value()  # Inside function: 5
print("Outside function:", value)  # Outside function: 10

解説

  • change_value関数内で定義されたvalueはローカル変数です。そのため、関数内ではローカル変数が表示され、グローバル変数には影響を与えません。
  • このように、変数のスコープを理解することは、予期しないバグを防ぐために重要です。

まとめ

  • ローカル変数は関数内でのみ有効で、関数が終了すると消失します。
  • グローバル変数はスクリプト全体で有効で、どの関数からもアクセス可能ですが、変更する際はglobalキーワードを使用する必要があります。
  • 同名のローカル変数とグローバル変数がある場合、関数内ではローカル変数が優先されます。

これらの概念を理解することで、Pythonでより効果的に変数を管理し、コードの可読性を高めることができるようになります。

出力結果: