別モジュール内のオブジェクト利用
モジュールはそのファイルごとにグローバルスコープとよばれる独立したスコープを形成する。つまり、プログラムはファイルごとにそれぞれ独立したスコープをもつため、他モジュールで作ったオブジェクトの識別子を直接利用することはできない。
以下2つのプログラムファイルを同じフォルダに作成しよう。
code:main21.py
import module2 # モジュール名「module2」はファイル「main21」のグローバルスコープ内の識別子となる
module2.func1() # 識別子「module2」を介して、他モジュールの識別子にアクセスできる
module2.func2()
# print(x) # 別モジュール内で作られた識別子(変数 x) は直接アクセスできない
print(module2.x)
print('# オブジェクト型の確認')
print(type(module2))
print(type(module2.func1))
print(type(module2.x))
読み込まれる側のプログラムを示す。
code:module2.py
def func1():
print('This is module2.func1')
def func2():
print('This is module2.func2')
x = 777
モジュール「module2」のグローバルスコープでは、関数 func1、 func2 および変数 x が作られている。(補足:他モジュール内の変数への代入)しかし、main21 から直接 module2 の識別子を利用することはできない。
インポート時に指定したモジュール名はそのモジュールを指す識別子となる。これを用いて他モジュールが形成したスコープにアクセスすることができる。
code:Figure.txt
main21【モジュール】
module2【モジュール】
├─ func1 # module2のスコープにある関数
├─ func2 # module2のスコープにある関数
└─ x # module2のスコープにあるグローバル変数
次のように実行する。
$ python3 main21.py
補足:別モジュールのオブジェクト利用(C言語の場合)
/icons/hr.icon
※ ブラウザのバックボタンで戻る