入力のキャッシュを使う

これは出力のキャッシュに似ています。出力では「Out」というグローバルディクショナリですが、 出力では「In」というグローバルディクショナリを使います。 例えば、22行目から28行目、そして34行目をもう一回実行しようとするならば、 「exec In[22:29]+In[34]」となります(22行目から28行目はPythonのスライスを使って取り出します)。 また、同じ事を何回も繰り返して実行する場合、「@macro」でマクロ機能を使うことができます。 「@macro マクロ名 n1:n2 n3:n4 n5 ...」という感じです。nは指定する行数です。 ただ、スライスを使っているのに気を付けてください。 例えば、以下の入力キャッシュから何回も実行するため、マクロにしたいと思ったとします。


44: x=1
45: y=3
46: z=x+y
47: print x
48: a=5
49: print 'x',x,'y',y

44行目から47行目、そして1行飛ばして49行目をマクロにしようとすれば、スライスを使って


In [51]: @macro my_macro 44:48 49

となりますとなります。

実行は


In [52]: my_macro
Out[52]: Executing Macro...
x 1 y 3

となります。「print my_macro」とするとマクロの内容が表示されます。

同じようにスライスを使うのに@save, @editがあります。 「@save myscript.py 44:48 49」とすれば、先程マクロ化した文をファイルに保存でき、 「@edit 44:48 49」でコマンド文をエディタ(デフォルトではunix系はvi,windows系ではnotepad)で開いて編集します (保存を忘れないでください)。

なお、「@hist」で入力したコマンドの履歴が表示されます。これを参照するといいでしょう。


n [14]: @hist -n 5
@save result.py 1:6
@save result.py 1:5 6
@save result.py 1:3 5
@hist
@hist -5

「-n 5」で最新5つの入力履歴が表示されます。

また、bashなどのシェルの履歴機能と同じく、キーボード矢印キーの↑、↓で履歴が参照できます。