備忘録

【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文などのループ処理内で自動的に生成