YouheiSakuraiさん回答で充分とも思えますが、質問者さんのモジュールの知識に曖昧な点があるように思えたので、少し補足的なコメントを試みます。
Pythonのモジュールをざっくりと捉えると
そのモジュールのソースファイルに書かれていることを実行した結果できるモジュールオブジェクトのこと
モジュールパス(sys.path
)のいずれかのディレクトリー/zipアーカイブなどのトップ階層に現れるモジュール名.py
あるいはモジュール名/__init__.py
のこと(正確には最適化などのためもう少し複雑な仕様ですが、概ねこのように理解しておくととりあえず間に合うと思います)
- (3)モジュールのソースファイルにある代入文で何が起きる?
代入文はモジュールオブジェクトに代入文の左辺の名前をモジュールの属性名として生成し、右辺の値(右辺に書いた式を評価した結果)をその属性の値にします。
- (4)モジュールのソースファイルにある関数定義やクラス定義で何がおきる?
代入文と同じようなことがおきます。属性の値が関数であったりクラスであったりすること、構文が代入文、関数定義、クラス定義によりちょっと違うだけです。
- (5.1)モジュールM1のソースファイルで
import M2
とすると何が起きる?
M2というモジュールオブジェクトをモジュールM1のM2
という属性名の値にすることを意味します。
- (5.2)モジュールM1のソースファイルで
from M2 import A
とすると何が起きる?
M2というモジュールオブジェクトにある属性AをモジュールM1のA
という属性名の値にすることを意味します。この場合はM1の属性名にM2という名前は追加されずAという名前だけが追加されます。
import request
とすると
- (A) requestモジュールのソースファイルが実行されてrequestモジュールオブジェクトが作られる
- (B) そのrequestモジュールオブジェクトの値があなたのモジュールのrequestという名前のグローバル変数の値になる
ということなので、import request
とした後ではrequestsの値はrequestsモジュールであり、そのrequestsモジュールには既にgetという属性名が存在しており、その値はreqeusts.apiモジュールのgetという属性の値と同一なのであなたのモジュール内でrequests.get
と記述できることになります。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。