import文 と from 形式の import文 の違い

記事
IT・テクノロジー

import文 と from 形式の import文 の違い

from 形式は、モジュール内の変数、関数、クラスもインポートできる特別な import 文なので、
import の対象により分けて考える必要がある

モジュールをインポートする場合

階層: a/b/c.py
種類: a, b はパッケージ、 c はモジュールとする
from a.b import c を実行した場合、
from a.b は import a.b を実行した時と同じ処理になる
import a と import a.b が順番に実行され、
c がモジュールであるため、 import a.b.c が最後に実行される

import a.b.c との違いは呼び出し元のスコープに登録される変数だけ

import a.b.c は変数 a をパッケージ a への参照として登録し、
from a.b import c は変数 c をモジュール c への参照として登録する
import a.b.c
変数として a が使えるようになる
 使用時
a.b.c.関数()
from a.b import c
変数として c が使えるようになる
 使用時
c.関数()

 モジュール内の 変数・関数・クラス をインポートする場合

階層: a/b/c.py
種類: a, b はパッケージ、 c はモジュール、 f は関数とする
import 文はモジュールやパッケージのみを対象とするため、
import a.b.c.f は実行できない
from a.b.c import f を実行した場合、
from a.b.c は import a.b.c を実行した時と同じ処理になる
この時点で、 c には関数 f が属性としてセットされているので、
import f でこの属性の f を取り出し
変数 f として、呼び出し元のスコープに登録される
使用時
f()

サービス数40万件のスキルマーケット、あなたにぴったりのサービスを探す ココナラコンテンツマーケット ノウハウ記事・テンプレート・デザイン素材はこちら