回答編集履歴
1
書きかけの回答を完成
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の呼び出しを書けばそれも同じように実行されます。
|