【Python】グローバル変数の使い方
投稿日 :
Tags:
Python
グローバル変数とは? その定義と基本的な使い方
Pythonプログラミングにおいて、変数のスコープは極めて重要な概念だ。その中でも、関数の内外を問わずプログラム全体からアクセスできる変数を グローバル変数 と呼ぶ。
グローバル変数は、関数の外部、つまりプログラムのトップレベルで定義される。定義方法は通常の変数と同じく、変数名と値を = で繋ぐだけだ。
# グローバル変数の定義
global_message = "Hello, World!"
def print_message():
print(global_message)
print_message() # 出力: Hello, World!
この例では、global_message がグローバル変数として定義されている。関数 print_message 内からもこの変数にアクセスし、その値を出力できていることがわかる。
関数とグローバル変数の関係性 値の参照と変更をマスターしよう
関数内部でグローバル変数を使う際、注意点がある。それは、関数内部でグローバル変数の値を変更する場合には、globalキーワードを使って明示的にグローバル変数を参照する必要があるという点だ。
# グローバル変数
counter = 0
def increment_counter():
global counter
counter += 1
increment_counter()
print(counter) # 出力: 1
上の例では、 increment_counter 関数内で global counter と宣言することで、 counter がグローバル変数であることを明示している。これにより、関数内部での counter += 1 はグローバル変数の値を更新する操作となる。
もし global を付けずに counter += 1 と記述した場合、Pythonは counter をローカル変数として扱い、新しいローカル変数が作成されてしまうので注意が必要だ。
グローバル変数のメリットとデメリット その光と影を理解する
グローバル変数は、プログラム全体からアクセスできるという利便性を持つ一方、その使い方によってはコードの可読性や保守性を低下させる可能性も秘めている。
メリット:
- プログラム全体でのデータ共有: 複数の関数から同じデータにアクセスする必要がある場合、グローバル変数は便利な手段となる。データベース接続情報や設定値など、プログラム全体で共有する必要のあるデータに適している。
- コードの簡略化: 関数間でデータの受け渡しをする際に、引数や戻り値を使わずにグローバル変数を利用することで、コードを簡潔に記述できる場合がある。
デメリット:
- 意図しない値の変更: グローバル変数はどこからでもアクセスできるため、意図しない場所で値が変更される可能性がある。これは、特に大規模なプログラム開発において、バグの発見を困難にする要因となりうる。
- 依存関係の複雑化: グローバル変数を多用すると、関数間の依存関係が複雑になり、コードの可読性や保守性が低下する可能性がある。これは、プログラムの変更やデバッグを難しくする要因となる。
グローバル変数のベストプラクティス より良いコードを書くための指針
グローバル変数の使用は、可能な限り避けることが推奨される。しかし、どうしても必要な場合は、以下の点に注意して使用することで、潜在的な問題を回避できる。
- グローバル変数の使用は必要最小限に抑える: プログラム全体で共有する必要がないデータは、ローカル変数として扱う。
- グローバル変数の命名規則を明確にする: グローバル変数とローカル変数を明確に区別するため、
g_やGLOBAL_などのプレフィックスを付けて命名する。 - グローバル変数の値を変更する際は、関数内で明示的に
globalキーワードを使用する: これは、意図せずにグローバル変数の値を変更してしまうことを防ぐために重要だ。 - グローバル変数を変更する専用関数を作成する: グローバル変数の値の変更を一元管理することで、コードの可読性と保守性を向上させる。
関連記事
-
【Python】入力を受け付ける方法 input()関数の使い方前提 Python: 3.12 input()関数の基本的な使い方 input()関数の基本的な使い方は非常にシンプルだ。関数を呼び出すだけで、プログラムの実行が一時
-
【Python】Pythonでソートする方法前提 Python: 3.12 Pythonにおけるソートの基礎: sort() vs sorted() Pythonでソートを行うには、主にsort()とsorted()の2つの関数が利用できる。
-
【Python】importの仕方前提 Python: 3.12 1. importの基本 まずは、importの基本的な使い方について確認しよう。 Pythonでは、以下のように記述することでモジュールを
-
【Python】pipの使い方前提 Python: 3.12 pipとは? Pythonパッケージ管理の強い味方 pipは、Package Installer for Pythonの略称であり、Pythonのパッケージをイン
-
【Jinja2】for文の中で使えるloopについて前提 Python: 3.12 Jinja2: 3.1.3 参考 List of Control Structures — Template Designer Documentation — Jinja Documentation (3.1.x) Jinja2のloop変数とは Jinja2のloop変数は、for文などのループ処理内で自動的に生成