回答編集履歴
4
誤記
test
CHANGED
@@ -1,12 +1,12 @@
|
|
1
1
|
追記:
|
2
2
|
|
3
|
-
quiquiさん回答から
|
3
|
+
quiquiさん回答からIPythonを知り、インストールして少し使ってみたところ・・・今まで知らずにいて損した気分がだんだん強くなってきました。自分の回答は蛇足だったようです。
|
4
4
|
|
5
5
|
|
6
6
|
|
7
|
-
(ちなみに
|
7
|
+
(ちなみにIPythonのREPL上で定義した関数fooについて
|
8
8
|
|
9
|
-
`foo.__code__.co_filename`を調べると
|
9
|
+
`foo.__code__.co_filename`を調べるとCPythonでは`<stdin>`であったのに対してIPythonでは`<ipython-input-4-01cc26abac88>`といった名前が入ってます。つまり元の回答で少し書いたlinecacheへのモンキーパッチをIPythonはやってくれているということだと思います。)
|
10
10
|
|
11
11
|
|
12
12
|
|
@@ -14,7 +14,9 @@
|
|
14
14
|
|
15
15
|
---
|
16
16
|
|
17
|
-
|
17
|
+
CPython前提でのコメントです。
|
18
|
+
|
19
|
+
(CPythonはPython言語の最も広く用いられている標準の実装のことです: by Wikipedia)
|
18
20
|
|
19
21
|
|
20
22
|
|
@@ -28,7 +30,7 @@
|
|
28
30
|
|
29
31
|
|
30
32
|
|
31
|
-
から元のソースを取り出してそれを表示しているのだと思います。この情報はモジュールをimportする場合など、
|
33
|
+
から元のソースを取り出してそれを表示しているのだと思います。この情報はモジュールをimportする場合など、CPythonのコンパイラーがソースファイルをコンパイルしてcodeオブジェクトに変換する際に記録されますがREPLのco_filenameは"<stdin>"などになっており、所謂普通のファイルパスではありません。
|
32
34
|
|
33
35
|
|
34
36
|
|
@@ -90,13 +92,13 @@
|
|
90
92
|
|
91
93
|
###IDLE
|
92
94
|
|
93
|
-
こういう目的ならIDLEのREPL+Editorを使うの
|
95
|
+
こういう目的ならIDLEのREPL+Editorを使うのもいいのではないでしょうか。ちょっと変数の中身を見たり関数の動きを試す際にはREPLを、関数を定義してrunとしたい場合はEditorを使うという感じです。
|
94
96
|
|
95
97
|
|
96
98
|
|
97
|
-
###
|
99
|
+
###python -i
|
98
100
|
|
99
|
-
IDLEのREPLはインデントがくずれたりとちょっとだけくせがある気がするので
|
101
|
+
IDLEのREPLはインデントがくずれたりとちょっとだけくせがある気がするのでpython(CPython)をターミナル上で起動してREPLとして用いたくなる場合もよくあります。その場合REPL自身のヒストリー機能は活用しますが、関数をREPL上で定義するのはやはり面倒なので別の画面でエディターを起動しておいて普通にソースファイル上に関数を定義します。
|
100
102
|
|
101
103
|
|
102
104
|
|
@@ -154,4 +156,4 @@
|
|
154
156
|
|
155
157
|
```
|
156
158
|
|
157
|
-
というようなreload関数を定義しておき、REPL上から`reload()`と打ち込んでしまいます。定義の中身自体はリロードしたモジュール上にある名前を`__main__`モジュールへ上書きするというインチキくさいものなので
|
159
|
+
というようなreload関数を定義しておき、REPL上から`reload()`と打ち込んでしまいます。定義の中身自体はリロードしたモジュール上にある名前を`__main__`モジュールへ上書きするというインチキくさいものなのでCPythonをREPLとして用いるときにしか使いません。
|
3
誤記
test
CHANGED
@@ -154,4 +154,4 @@
|
|
154
154
|
|
155
155
|
```
|
156
156
|
|
157
|
-
というようなreload関数を定義しておき、REPL上から`reload()`と打ち込んでしまいます。定義の中身自体はリロードしたモジュール上にある名前を__main__モジュールへ上書きするというインチキくさいものなのでcpythonをREPLとして用いるときにしか使いません。
|
157
|
+
というようなreload関数を定義しておき、REPL上から`reload()`と打ち込んでしまいます。定義の中身自体はリロードしたモジュール上にある名前を`__main__`モジュールへ上書きするというインチキくさいものなのでcpythonをREPLとして用いるときにしか使いません。
|
2
誤記
test
CHANGED
@@ -32,7 +32,7 @@
|
|
32
32
|
|
33
33
|
|
34
34
|
|
35
|
-
しかしながらinspect.pyを
|
35
|
+
しかしながらinspect.pyを覗いてみると面白いコメントがありました。
|
36
36
|
|
37
37
|
|
38
38
|
|
1
追記
test
CHANGED
@@ -1,3 +1,19 @@
|
|
1
|
+
追記:
|
2
|
+
|
3
|
+
quiquiさん回答からipythonを知り、インストールして少し使ってみたところ・・・今まで知らずにいて損した気分がだんだん強くなってきました。自分の回答は蛇足だったようです。
|
4
|
+
|
5
|
+
|
6
|
+
|
7
|
+
(ちなみにiptyonのREPL上で定義した関数fooについて
|
8
|
+
|
9
|
+
`foo.__code__.co_filename`を調べるとcpythonでは`<stdin>`であったのに対してiptyonでは`<ipython-input-4-01cc26abac88>`といった名前が入ってます。つまり元の回答で少し書いたlinecacheへのモンキーパッチをipythonはやってくれているということだと思います。)
|
10
|
+
|
11
|
+
|
12
|
+
|
13
|
+
以下元の回答
|
14
|
+
|
15
|
+
---
|
16
|
+
|
1
17
|
cpython前提でのコメントです。
|
2
18
|
|
3
19
|
|