Pythonの予約語「global」の解説
globalとは何か
globalは、Pythonで変数のスコープ(有効範囲)を制御するために使用される予約語です。通常、関数内で定義された変数はローカル変数として扱われ、その関数内でのみ使用されます。しかし、global
を使うことで、関数内からグローバル変数(関数の外でも使用可能な変数)を操作することができます。
globalの基本的な使い方
以下の例では、global
キーワードを使って関数内でグローバル変数を変更しています。
count = 0 # グローバル変数
def increment():
global count # グローバル変数を指定
count += 1
increment()
print(count) # 出力: 1
このコードでは、count
というグローバル変数が関数increment
内で操作されています。global
を指定することで、関数内でもグローバル変数count
にアクセスして値を変更することが可能です。
ローカル変数とグローバル変数の違い
通常、関数内で定義された変数はローカル変数として扱われ、外部のコードからはアクセスできません。しかし、global
を使用することで、関数内からもグローバル変数にアクセスすることが可能です。以下に、ローカル変数とグローバル変数の違いを示します。
変数の種類 | 定義場所 | 有効範囲 |
---|---|---|
ローカル変数 | 関数内 | その関数内のみ |
グローバル変数 | 関数外 | プログラム全体 |
globalを使わない場合
global
を使わないと、関数内で同じ名前の変数を定義した場合、それはローカル変数として扱われ、グローバル変数には影響を与えません。次の例を見てみましょう。
count = 0 # グローバル変数
def increment():
count = 10 # ローカル変数として扱われる
print(count) # 出力: 10
increment()
print(count) # 出力: 0
このコードでは、関数increment
内でcount
が再定義されていますが、これはローカル変数として扱われ、グローバル変数のcount
には影響を与えていません。関数外でのcount
の値は変わらず0
です。
globalの使用例
global
を使うと、関数内でグローバル変数にアクセスして変更することができます。次の例では、グローバル変数のリストに関数内から要素を追加しています。
numbers = [] # グローバル変数
def add_number(num):
global numbers # グローバル変数を指定
numbers.append(num)
add_number(10)
add_number(20)
print(numbers) # 出力: [10, 20]
この例では、グローバル変数numbers
(リスト)に関数内から10
と20
を追加しています。global
を使用することで、関数内でグローバル変数にアクセスし、変更が可能になっています。
globalの注意点
global
を使う際には、いくつかの注意点があります。グローバル変数を頻繁に変更すると、プログラムの挙動が予測しにくくなり、デバッグが困難になる可能性があります。また、global
を使わなくても済む場合は、ローカル変数や関数の引数を活用して、より安全で管理しやすいコードを書くことが推奨されます。
まとめと注意点
global
は、関数内でグローバル変数を操作するために使用されます。- グローバル変数にアクセスし変更を加える場合、
global
を使わなければローカル変数として扱われます。 - 頻繁に
global
を使うと、コードの保守性が低下し、バグの原因となりやすいので注意が必要です。 - 可能な限りグローバル変数の使用を避け、ローカル変数や関数の引数でデータを管理するのが望ましいです。