Python で複数のファイル間でグローバル変数を使用する

Naila Saad Siddiqui 2023年10月10日
  1. Python のグローバル変数
  2. Python で複数のファイル間でグローバル変数を使用する
Python で複数のファイル間でグローバル変数を使用する

この簡単なガイドは、Python で複数のファイルにまたがるグローバル変数の使用に関するものです。 しかし、本題に入る前に、グローバル変数と、複数のファイルでのそれらの使用について簡単に見てみましょう。

Python のグローバル変数

グローバル変数は、関数スコープの一部ではなく、プログラム全体でグローバルに使用できる変数です。 これは、グローバル変数が関数本体の内外でも使用できることを示唆しています。

例を見てみましょう:

x = "my global var"


def fun1():
    print("Inside fun1(): ", x)


fun1()
print("In global context: ", x)

このコードでグローバル変数 x を定義し、値を割り当てました。 次に、関数内外で x 変数を出力して、両方のスコープで値を確認しました。

出力:

Python グローバル変数 - 出力

出力は、変数の値が関数の内外で同じであることを示しています。 関数のように、ローカルスコープでグローバル変数の値を変更する必要がある場合は、変数を宣言するときに global キーワードを使用する必要があります。

Python で複数のファイル間でグローバル変数を使用する

プログラムに複数のファイルを使用していて、これらのファイルで変数を更新する必要がある場合は、次のように global キーワードを使用して変数を宣言する必要があります。

global x
x = "My global var"

複数の Python コード ファイルと学生のリストのグローバル変数を処理する必要があるシナリオの例を考えてみましょう。 resource.py ファイルには学生のグローバル リストがあり、prog.py にはこのグローバル リストに学生を追加するメソッドがあります。

次のコードを使用して概念を実現できます。

コード - resource.py:

def initialize():
    global students
    students = []

コード - prog.py:

import resource


def addStudent():
    resource.students.append("John")
    resource.students.append("Dave")

コード - Main.py:

import resource
import prog

resource.initialize()
prog.addStudent()
print(resource.students[0])
print(resource.students[1])

最初の resource.py ファイルでは、リスト studentList を宣言し、それを空のリストに初期化する関数を定義しました。 次のファイル (つまり、prog.py) では、resource モジュールをインクルードしてから、グローバル リスト studentList に 2つのオブジェクトを追加した関数 addStudent を定義しています。

メイン ファイル Main.py には、resourceprog の両方のモジュールが含まれています。 後で、両方のモジュールの関数 initializeaddStudent をそれぞれ呼び出しました。

その後、リストのインデックスを出力すると、次の出力が得られました。

ファイル全体の Python グローバル変数 - 出力

したがって、global キーワードを使用して、Python ファイルでグローバル変数を定義し、他のファイルで使用することができます。 ここで、別のファイル内のファイルのグローバル変数にアクセスするには、グローバル変数を持つファイルを別のファイル内のモジュールとしてインポートし、追加の複雑さなしに、インポートされたモジュールのグローバル変数に直接アクセスします。

関連記事 - Python Scope