回答編集履歴

1

書きかけの回答を完成

2018/04/17 11:06

投稿

KSwordOfHaste
KSwordOfHaste

スコア18394

test CHANGED
@@ -3,3 +3,53 @@
3
3
 
4
4
 
5
5
  > 呼び出しがない場合は一番上の行のname = 'blogspider'から読み込まれて実行をするというルールがあるのですか?
6
+
7
+
8
+
9
+ Pythonでimportするということはimport先のスクリプトに書いてあることを「書いてある通りに実行すること」なのです。試しに
10
+
11
+
12
+
13
+ my.py
14
+
15
+ ```python
16
+
17
+ print('loading my.py')
18
+
19
+
20
+
21
+ def foo(): pass
22
+
23
+ ```
24
+
25
+
26
+
27
+ main.py
28
+
29
+ ```python
30
+
31
+ import my
32
+
33
+
34
+
35
+ print(my.foo)
36
+
37
+ ```
38
+
39
+
40
+
41
+ を同じディレクトリーに置きmain.pyを動かしてみてください。
42
+
43
+
44
+
45
+ loading my.py
46
+
47
+ <class 'function'>
48
+
49
+
50
+
51
+ と表示されると思います。
52
+
53
+
54
+
55
+ importは`def`や`class`の定義をロードする機能と考えがちです。それはそれで間違ってないのですがPythonにおけるロードって要するに指定したモジュールのソースに書いてある文を実行することに当たります。宣言とか定義に見える構文も「全て実行される文」なんですね。例えば`def foo():...`と書いてある文はそこに書いてある定義の関数を`foo`という名前に結び付ける実行文です。`class`や代入文なんかも全部そうです。上の例のようにprintの呼び出しを書けばそれも同じように実行されます。