1. はじめに
Pythonでは、関数の外で定義された変数を「グローバル変数」と呼びます。この記事では、Python|グローバル変数を宣言して使う方法について、初心者にもわかりやすく解説します。
グローバル変数を使うことで、複数の関数間で共通の値を扱えるようになりますが、使い方を誤るとバグの温床にもなりがちです。本記事では、基本の使い方から注意点、実務での活用例まで丁寧に紹介します。
2. Pythonにおけるグローバル変数の基本
2-1. グローバル変数とは?
グローバル変数とは、関数の外で定義された変数のことです。Pythonでは、関数の内側と外側で変数のスコープ(有効範囲)が異なります。関数外で定義した変数は、関数内からも参照できますが、書き換えるには「global宣言」が必要になります。
2-2. 基本的な使い方
以下は、グローバル変数の定義と関数内での使用例です。
# グローバル変数を定義
message = "こんにちは"
def greet():
print(message) # グローバル変数を参照
greet()
実行結果:
こんにちは
2-3. 関数内でグローバル変数を書き換える
関数内でグローバル変数を書き換えるには、global
キーワードを使います。
count = 0 # グローバル変数
def increment():
global count # グローバル変数を使うことを明示
count += 1
increment()
print(count)
実行結果:
1
3. よくある使い方・応用例
3-1. 状態を保持するカウンター関数
複数の関数で共通の状態(例:カウント数)を保持したい場合、グローバル変数は便利です。
counter = 0
def add():
global counter
counter += 1
print(f"加算後の値: {counter}")
def reset():
global counter
counter = 0
print("カウンターをリセットしました")
add()
add()
reset()
add()
実行結果:
加算後の値: 1
加算後の値: 2
カウンターをリセットしました
加算後の値: 1
3-2. 設定値やフラグの共有
グローバル変数は、設定フラグや共有リストなど、プログラム全体で扱う定数的なデータにも使えます。
# 設定用のグローバル変数
debug_mode = True
def process():
if debug_mode:
print("デバッグモードで処理中...")
process()
実行結果:
デバッグモードで処理中...
4. グローバル変数の注意点・エラー対策
4-1. 初心者がよくやるミス
global
を付け忘れて関数内で代入し、ローカル変数として扱われてしまう- 複数関数で同じグローバル変数を操作して、意図しない値になる
例として、global
を宣言しないと以下のようなエラーになります。
value = 10
def change_value():
value += 1 # エラー! globalを指定していない
change_value()
実行結果:
UnboundLocalError: local variable 'value' referenced before assignment
4-2. グローバル変数の多用は避けよう
グローバル変数が多すぎると、コードの可読性や保守性が低下します。複数人で開発する際は、意図しない副作用を防ぐためにも、なるべく関数の引数や戻り値で値を渡す設計を心がけましょう。
5. まとめ
- Pythonでは、関数外で定義した変数をグローバル変数と呼ぶ
- 関数内で値を変更する場合は
global
キーワードが必要 - 状態管理や設定フラグなど、実務でも活用される
- 多用は避け、可読性や保守性に配慮することが重要
グローバル変数は便利ですが、使い方を誤るとバグの温床になりやすいです。適切に理解し、「どこで何が変わるか」を常に意識した設計を心がけましょう。
実務では、設定ファイルの一元管理や、ステータスフラグの共有などで活用される場面があります。習得のコツは、まずは少数のグローバル変数から試し、徐々に仕組みを理解することです。