質問編集履歴
2
質問文が紛らわしかった
test
CHANGED
File without changes
|
test
CHANGED
@@ -43,3 +43,37 @@
|
|
43
43
|
あらかじめ関数内で宣言している変数を先に探して処理をしているということであれば納得できるのですが、
|
44
44
|
|
45
45
|
実際実行処理する際はpythonはどのような順番で処理をしていっているのでしょうか?
|
46
|
+
|
47
|
+
|
48
|
+
|
49
|
+
|
50
|
+
|
51
|
+
---------------------追記-------------------------
|
52
|
+
|
53
|
+
|
54
|
+
|
55
|
+
質問の仕方が悪かったので変えさせていただきます!
|
56
|
+
|
57
|
+
以下が分かる方お願いします!
|
58
|
+
|
59
|
+
|
60
|
+
|
61
|
+
・print(c)がエラーが起こるのはグローバル空間への参照が失われてるから
|
62
|
+
|
63
|
+
・ではなぜ参照が失われているのか、それはcに代入することで新たに関数内でcという変数を宣言しているからすよね
|
64
|
+
|
65
|
+
・よってprint(c)は変数未定義でエラーとなる
|
66
|
+
|
67
|
+
|
68
|
+
|
69
|
+
ここで生じてくる疑問が1つあります
|
70
|
+
|
71
|
+
参照が失われる ということができるのは関数内で同じcという変数が宣言されていることがわからないとできないことですよね?
|
72
|
+
|
73
|
+
同じcという変数が宣言されていることが分かっているので参照が失われる
|
74
|
+
|
75
|
+
しかし変数が宣言されていることが分かっているのであれば変数未定義のエラーになるのはおかしいのでないか?
|
76
|
+
|
77
|
+
|
78
|
+
|
79
|
+
ということです
|
1
コードに誤りがあったため
test
CHANGED
File without changes
|
test
CHANGED
@@ -24,7 +24,7 @@
|
|
24
24
|
|
25
25
|
def func():
|
26
26
|
|
27
|
-
print(
|
27
|
+
print(c)
|
28
28
|
|
29
29
|
c = 100
|
30
30
|
|