回答編集履歴

1 書きかけの回答を完成

KSwordOfHaste

KSwordOfHaste score 18191

2018/04/17 20:06  投稿

importの動作についての素朴な話と受け取ってコメントをしてみます。
> 呼び出しがない場合は一番上の行のname = 'blogspider'から読み込まれて実行をするというルールがあるのですか?
> 呼び出しがない場合は一番上の行のname = 'blogspider'から読み込まれて実行をするというルールがあるのですか?
Pythonでimportするということはimport先のスクリプトに書いてあることを「書いてある通りに実行すること」なのです。試しに
my.py
```python
print('loading my.py')
def foo(): pass
```
main.py
```python
import my
print(my.foo)
```
を同じディレクトリーに置きmain.pyを動かしてみてください。
loading my.py
<class 'function'>
と表示されると思います。
importは`def`や`class`の定義をロードする機能と考えがちです。それはそれで間違ってないのですがPythonにおけるロードって要するに指定したモジュールのソースに書いてある文を実行することに当たります。宣言とか定義に見える構文も「全て実行される文」なんですね。例えば`def foo():...`と書いてある文はそこに書いてある定義の関数を`foo`という名前に結び付ける実行文です。`class`や代入文なんかも全部そうです。上の例のようにprintの呼び出しを書けばそれも同じように実行されます。

思考するエンジニアのためのQ&Aサイト「teratail」について詳しく知る