回答編集履歴
2
追記
answer
CHANGED
@@ -24,11 +24,13 @@
|
|
24
24
|
質問1.
|
25
25
|
|
26
26
|
1 Subをimportした時点で、Mainにもローカル変数xが定義され、Subのxと同じ値で初期化される
|
27
|
-
いろいろ間違いです。
|
27
|
+
"Subをimportした時点" が import Sub のことを言っているならいろいろ間違いです。
|
28
28
|
|
29
29
|
- Subをimportした時点ではモジュールMainの名前空間にSubという変数が定義されてモジュールSubが束縛されます
|
30
30
|
- モジュールMainの名前空間に束縛された変数のことはPythonでは[通例グローバル変数とは呼ばれます](https://docs.python.org/ja/3/reference/executionmodel.html#binding-of-names)
|
31
31
|
|
32
|
+
"Subをimportした時点" が from Sub import x のことを言っているなら、"ローカル変数"や"初期化される"という語の使い方に違和感がありますがだいたい合っています。
|
33
|
+
(Pythonは「値」を「名前」に束縛するという実行モデルです。その名前のことを**便宜上**変数と呼びますが、実行モデルに**変数という概念はなく**、したがって「変数の初期化」という概念もまたありません。一番最初にある名前に値を束縛することを**便宜上**「変数の初期化」と呼ばなくもない程度かと)
|
32
34
|
|
33
35
|
|
34
36
|
2 "Sub.x"にてSubのxへ、"x"にてMainローカルのxへアクセスするようになる
|
1
サブモジュールのインポート時の名前束縛の追記と誤字修正
answer
CHANGED
@@ -15,7 +15,7 @@
|
|
15
15
|
|
16
16
|
1. Subというモジュールを探し出してロードする
|
17
17
|
1. Subがxという属性を持っているかをチェックする
|
18
|
-
1. もし持っていない場合、Sub.x というというサブモジュールのインポートを試みる(失敗したらImportError)
|
18
|
+
1. もし持っていない場合、Sub.x というというサブモジュールのインポートを試みる(成功するとSub.xモジュールがSubの名前空間にxという名前で[束縛される](https://docs.python.org/ja/3/reference/import.html#submodules)。失敗したらImportError)
|
19
19
|
1. import文が書かれたところの名前空間に、「Sub.x に束縛されているオブジェクト」を「xという名前」で束縛する
|
20
20
|
|
21
21
|
|
@@ -27,7 +27,7 @@
|
|
27
27
|
いろいろ間違いです。
|
28
28
|
|
29
29
|
- Subをimportした時点ではモジュールMainの名前空間にSubという変数が定義されてモジュールSubが束縛されます
|
30
|
-
- モジュールMainの名前空間に束縛された変数のことはPythonでは[通
|
30
|
+
- モジュールMainの名前空間に束縛された変数のことはPythonでは[通例グローバル変数とは呼ばれます](https://docs.python.org/ja/3/reference/executionmodel.html#binding-of-names)
|
31
31
|
|
32
32
|
|
33
33
|
|