Pythonでは、グローバル変数を使って異なるモジュール間でデータを共有することができます。しかし、これは一見すると簡単なように見えますが、実際にはいくつかの注意点があります。
まず、Pythonのグローバル変数は、その名前が示す通り、全てのスコープからアクセス可能な変数です。しかし、これはそのモジュール内での話であり、他のモジュールからそのグローバル変数を直接参照することはできません。
したがって、あるモジュールで定義したグローバル変数を、別のモジュールで更新したい場合は、以下のような手順を踏む必要があります。
- グローバル変数を含むモジュールをインポートします。
global
キーワードを使って、更新したいグローバル変数を宣言します。- グローバル変数を更新します。
以下に具体的なコードを示します。
# module1.py
val = 10
# module2.py
import module1
def update_val():
global module1.val
module1.val = 20
このようにすると、module2.py
のupdate_val
関数内でmodule1.py
のグローバル変数val
を更新することができます。
しかし、この方法には一つ問題があります。それは、グローバル変数を更新するたびにglobal
キーワードを使って変数を宣言しなければならない点です。これはコードが冗長になるだけでなく、ミスを誘発する可能性もあります。
そこで、別の解決策として、グローバル変数を格納する専用のモジュールを作成し、そのモジュールを他の全てのモジュールからインポートするという方法があります。この方法ならば、global
キーワードを使う必要はありません。
以下に具体的なコードを示します。
# global_vars.py
val = 10
# module1.py
import global_vars
def update_val():
global_vars.val = 20
このようにすると、module1.py
のupdate_val
関数内でglobal_vars.py
のグローバル変数val
を直接更新することができます。
以上が、Pythonでグローバル変数を別モジュールで更新する方法です。Pythonのグローバル変数は強力なツールですが、適切に使いこなすためにはその特性と制限を理解することが重要です。