teratail header banner
teratail header banner
質問するログイン新規登録

回答編集履歴

2

追記

2020/04/14 02:16

投稿

quickquip
quickquip

スコア11314

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

サブモジュールのインポート時の名前束縛の追記と誤字修正

2020/04/14 02:16

投稿

quickquip
quickquip

スコア11314

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では[通グローバル変数とは呼ばれます](https://docs.python.org/ja/3/reference/executionmodel.html#binding-of-names)
30
+ - モジュールMainの名前空間に束縛された変数のことはPythonでは[通グローバル変数とは呼ばれます](https://docs.python.org/ja/3/reference/executionmodel.html#binding-of-names)
31
31
 
32
32
 
33
33