Pythonのglobalsの使い方|グローバル変数のリストの表示や変更をする方法

スポンサーリンク

今回は、Pythonのglobals()関数について詳しくお話しします。

では、さっそく始めてみましょう。

スポンサーリンク

Python の globals() 関数って何?

Python globals()関数は、プログラム中の特定のコードに含まれるすべてのグローバル変数とその値のリストにアクセスできるようにする関数です。

globals()関数は、現在のグローバルシンボルテーブルを含むPythonの辞書を表しています。

シンボルテーブルって何?

シンボルテーブルとは何ですか?

シンボルテーブルとは、異なるシンボルに関する情報を表すテーブル構造です。

シンボルは、変数、キーワード、関数など、プログラミングコードの任意の属性にすることができます

さらに、シンボルテーブルは、これらのシンボルの名前と、そのオブジェクトのタイプ、プログラム全体の範囲などを指定します。

シンボルテーブルは、次のような種類に分類される。

  • グローバルテーブル。グローバルテーブル:グローバル変数に関する情報を辞書形式で表現します。
  • ローカルテーブル。ローカル変数に関する情報を辞書形式で表現します。

Python の locals() 関数は、現在のローカルシンボルテーブルを表し、それを返します。

ローカル変数とlocals()関数についてもっと知りたい方は、Python locals()関数をご覧ください。

globals()関数の動作を理解した上で、次にその構造を理解しましょう。

globals() 関数のシンタックス

globals()関数はパラメータを受け取りません。

これは、現在のシンボルテーブルの値を示す辞書を返します。

構文は次のとおりです。

globals()

では、以下の例でglobals()関数の実装を理解しましょう。

Python の globals() 関数を例として実装する

以下の例では、be globals()関数を呼び出して、出力をこのように解釈しています。

例えば、以下の様になります。

print(globals())

globals()関数は、グローバルシンボルテーブルの値の辞書を返し、モジュールやファイル名などの詳細情報を提供します。

結果は以下の通りです。

{'__cached__': None, '__builtins__': <module 'builtins' (built-in)>, '__name__': '__main__', '__spec__': None, '__file__': 'main.py', '__doc__': None, '__loader__': <_frozen_importlib.SourceFileLoader object at 0x7f31606f4e80>, '__package__': None}

グローバルスコープ変数とローカルスコープ変数の表示

次に、関数内でグローバル変数とローカル変数を定義し、その結果を知るためにglobals()関数を呼び出してみましょう。

例えば、以下の様になります。

varG = 20 # global variable
def var():
    varL = 100 # local variable
 
print(globals())

Pythonのglobals()関数は、グローバル変数(varG)とその値、関数、ファイル名などに関する情報を含む辞書を返します。

しかし、気づけばglobals()関数はローカル変数(varL)に関する情報を表現していません。

その作業は locals() 関数によって行われます。

出力してください。

{'__file__': 'main.py', 'varG': 20, '__loader__': <_frozen_importlib.SourceFileLoader object at 0x7f7ff13e7e48>, '__cached__': None, '__doc__': None, '__package__': None, '__name__': '__main__', '__spec__': None, '__builtins__': <module 'builtins' (built-in)>, 'var': <function var at 0x7f7ff1436bf8>}

変数の変更と操作

以下のように、グローバル変数の値を変更することも可能です。

例えば、以下の様になります。

var = 100
 
globals()['var'] = 12
 
print('var:', var)
print(globals())

ここでは、var = 100 を代入しています。

さらに、globals()関数を使って、変数「var」の値を12に変更しました。

出力を分析すると、globals 関数はグローバル・シンボル・テーブルの dict を、変数の更新値、すなわち var = 12 と共に返します。

結果は、以下の通りです。

var: 12
{'__file__': 'main.py', '__builtins__': <module 'builtins' (built-in)>, '__doc__': None, '__spec__': None, '__name__': '__main__', '__package__': None, '__loader__': <_frozen_importlib.SourceFileLoader object at 0x7f3f83a1ae10>, '__cached__': None, 'var': 12}

まとめ

ここまでで、このトピックは終了です。

何か疑問があれば、お気軽にコメントください。

タイトルとURLをコピーしました