Pythonのglobalによるグローバル変数の参照と使い方をわかりやすく解説

スポンサーリンク
スポンサーリンク

globalの概要

グローバル変数の参照と変更 Python予約語

global

概要 global は、関数やメソッド内でスコープ外に定義されたグローバル変数を参照および変更するためのキーワードです。通常、関数内での変数の変更はローカルスコープ内に留まりますが、global を使うことで、外部の変数に影響を与えることができます。

わかりやすく説明 global を使うと、「外側で定義された変数を関数の中から操作する」ことができます。例えば、関数の中でカウンタを増やしたい場合などに利用します。

  • global を使うと、グローバルスコープにある変数を関数内で変更できます。
  • 通常、関数内で変数を操作すると、ローカルスコープで新しい変数が作られます。
  • 多用するとコードが複雑になるため、使用は慎重に行うべきです。

globalの基本的な使い方

以下の例では、関数内でグローバル変数を変更しています。

# global を使ったグローバル変数の変更
counter = 0  # グローバル変数

def increment():
    global counter
    counter += 1  # グローバル変数を変更

increment()
print(counter)  # 1
  • counter は関数外で定義されたグローバル変数です。
  • global counter を使用することで、関数内でグローバル変数を変更しています。
  • 関数を実行すると、グローバル変数の値が変更されます。

globalがない場合の挙動

global を使わない場合、関数内の変数操作はローカルスコープに限定されます。

# global がない場合
counter = 0  # グローバル変数

def increment():
    counter = 1  # ローカル変数として新たに定義
    print(f"関数内の counter: {counter}")

increment()
print(f"グローバルの counter: {counter}")  # 0
  • counter = 1 はローカルスコープで新しく変数を定義しています。
  • 関数外のグローバル変数 counter には影響を与えません。

globalを使った複数変数の操作

global は複数の変数を同時に指定することができます。

# 複数のグローバル変数を操作
x = 10
y = 20

def update_globals():
    global x, y
    x += 5
    y *= 2

update_globals()
print(x, y)  # 15, 40
  • global x, y で複数のグローバル変数を指定しています。
  • 関数内で xy を同時に操作できます。

globalの注意点

  • グローバル変数の多用は避ける: 多くの関数で同じグローバル変数を変更すると、コードが読みにくくなる可能性があります。
  • ローカル変数を優先: 可能であれば、ローカル変数を使って処理を完結させるべきです。
  • スコープを明確にする: global を使用する際は、どの変数がグローバルかを明確にしておくことが重要です。

globalのよくある質問

Q: global を使わずにグローバル変数を変更する方法はありますか?
A: 関数の戻り値を使って変更した値を返し、それをグローバル変数に代入する方法が一般的です。
Q: global はどのスコープでも使用できますか?
A: はい。ただし、モジュールスコープの変数に対してのみ有効です。
Q: グローバル変数はどのような場面で使うべきですか?
A: 設定値や共有データなど、複数の関数やモジュールで共有する必要がある場合に使います。

まとめ

global は、関数内でグローバル変数を参照・変更するためのキーワードです。

  • 通常、関数内ではローカル変数が優先されますが、global を使うと外部変数を操作できます。
  • 適切に使用することで、複数の関数間でデータを共有できます。
  • グローバル変数の多用は避け、可読性の高いコードを心がけましょう。

適切に global を活用し、効率的なプログラムを作成しましょう。