Pythonでは、関数内で定義した変数は通常、その関数のスコープ内でのみ有効です。しかし、時には関数間で変数を共有したい場合もあります。そのような場合には、以下の3つの主な方法があります。
- オブジェクトを介してメンバ変数としてアクセスする: この方法では、関数の入力にオブジェクトを渡し、そのオブジェクト内のメンバ変数を関数内外からアクセス可能にします。
class Message:
test = "変更していません"
def overwrite(mes):
mes.test = "変更されています!"
print("関数の中では" + mes.test)
m = Message()
overwrite(m)
print("関数の外では" + m.test)
- グローバル変数として宣言する: この方法では、関数外の変数と同じ名前の変数を
global
キーワードを用いてグローバル変数として宣言します。
test = "変更していません"
def overwrite():
global test
test = "変更されています!"
print("関数の中では" + test)
overwrite()
print("関数の外では" + test)
- モジュール化した後でグローバル変数として扱う: この方法は、2の方法をさらに進めたもので、グローバル変数をモジュール化します。
これらの方法を適切に使い分けることで、Pythonで関数間の変数共有を効果的に行うことができます。ただし、グローバル変数は適切に使用しないとコードの可読性や保守性を損なう可能性があるため、注意が必要です。