グローバルスコープ
(モジュール)グローバルスコープ(モジュールスコープ)といい、Pythonではプログラムファイル(モジュール)ごとに独立したグローバルスコープを形成する。
関数やクラス定義の外側の領域で宣言された関数や変数などの識別子はグローバルスコープに属し、このスコープ(有効範囲)はファイル全体となる。 code:scope_global1.py
x = 1
def func():
print(x)
func()
図1はグローバルスコープにおいて変数と関数のオブジェクトが作られ、それらに識別子の「x」と「func」が割り当てられる例を示している。識別子を赤色で、それらが利用される箇所を青色で示している。
https://scrapbox.io/files/65123564dbe3ac001c1f7c35.png
図1:グローバルスコープの有効範囲
次の例では、グローバルスコープに属する関数func1, func2は、このモジュール内の全ての箇所から(特に、func1の内部からfunc2を利用している)利用できるという例を示している。
code:scope_global2.py
def func1():
print('In func1')
func2()
def func2():
print('In func2')
func1()
https://scrapbox.io/files/65123468fa4c71001c42950e.png
図2:グローバルスコープの有効範囲
他モジュールのグローバルスコープ
他のモジュールで作られた
import文で読み込んだ先と、読み込み元のモジュールはそれぞれ独立したグローバルスコープを形成するので、スコープを越えて識別子を直接利用することはできない。(参考:別モジュール内のオブジェクト利用)そのため、モジュール名まで含めて指定する必要がある。