回答編集履歴
2
用語を補足
test
CHANGED
@@ -30,7 +30,7 @@
|
|
30
30
|
|
31
31
|
|
32
32
|
|
33
|
-
(1)がミソです。関数呼び出しの文法は最初のころ「`関数名` `(` `引数式の並び` `)`」であると捉えるのが典型的だと思いますが、実際はそうではなく「`プライマリ式` `(` `引数式の並び` `)`」です。つまり「関数名」などという言語仕様はなくて「単なるプライマリ式」を評価した結果がcallableだったのでそれを呼び出せただけです。Pythonインタープリタは「ひたすら値を計算するのが仕事」です。よってその値が何に由来したものだったかといったデバッグにしか使い道がなさそうな情報は最小限しか記録しません。おそらくPythonの設計者は「どの識別子に結び付いていた値だったか」はなくても、バックトレースで充分と考えたのだと思います。
|
33
|
+
(1)がミソです。関数呼び出しの文法は最初のころ「`関数名` `(` `引数式の並び` `)`」であると捉えるのが典型的だと思いますが、実際はそうではなく「`プライマリ式` `(` `引数式の並び` `)`」です。つまり「関数名」などという言語仕様はなくて「単なるプライマリ式」を評価した結果がcallableだったのでそれを呼び出せただけです。Pythonインタープリタは「ひたすら値を計算するのが仕事」です。よってその値が何に由来したものだったかといったデバッグにしか使い道がなさそうな情報は最小限しか記録しません。おそらくPythonの設計者は「どの識別子に結び付いていた値だったか」はなくても、スタックトレース(バックトレース)で充分と考えたのだと思います。
|
34
34
|
|
35
35
|
|
36
36
|
|
1
コードにmainの呼び出しを追加
test
CHANGED
@@ -108,6 +108,8 @@
|
|
108
108
|
|
109
109
|
|
110
110
|
|
111
|
+
main()
|
112
|
+
|
111
113
|
```
|
112
114
|
|
113
115
|
(CPython 3.7で確認)
|