iPython でちょっと便利なショートカットとか

なんか色々便利そうなショートカットとかコマンド見っけてたので備忘録的にメモ。% ついてるやつは Magic Function とかいうらしい。

関数実行のショートカット

かっこは省略できるらしい。初めて知った。
「/」でさらに引数の「,」を省略。「,」で引数を文字列に変換。

# かっこ省略で実行
In [23]: sample 1, 2
-------> sample(1, 2)

# さらに引数の「,」省略で実行
In [24]: /sample 1 2
-------> sample(1,2)

# 引数を文字列に変換して実行
In [25]: ,sample 1 2
-------> sample("1", "2")

名前空間関連

%who, %whos, %who_ls, %reset を使う。
どの変数に何を入れたのか忘れてしまったときとか便利。めんどくなったらリセットも可能。

# とりあえず一覧
In [35]: %who
l       random  sample  

# 詳細情報も表示
In [34]: %whos
Variable   Type        Data/Info
--------------------------------
l          list        [0, 2, 3, 4, 5, 6, 7, 8]
random     module      <module 'random' from '/o<...>ib/python2.5/random.pyc'>
sample     function    <function sample at 0x13c7a30>

# リストとして出力
In [36]: %who_ls
Out[36]: ['l', 'random', 'sample']

# 名前空間リセット
In [37]: %reset
Once deleted, variables cannot be recovered. Proceed (y/[n])?  y

In [38]: %who
Interactive namespace is empty.

store すげー便利

iPython を終了しても値を保存しておいてくれる。めっちゃ長いデータを使い回すときとか使えそう。
「store 値」で保存、「store」で一覧、「>」でファイル書き込み、「>>」でファイル追記、「-r」で復元、「-d」で削除、「-z」で全削除とか。

In [3]: a = 'stored string'

# データを保存
In [4]: store a
Stored 'a' (str)

# 保存しているデータ一覧表示
In [7]: store
Stored variables and their in-db values:
a             -> 'stored string'
b             -> [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]

In [8]: a = 'uwagaki'

In [9]: a
Out[9]: 'uwagaki'

# 上書きされた変数を復元
In [10]: store -r a

In [11]: a
Out[11]: 'stored string'

# ファイルに書き込む
In [19]: store a > a.txt
Writing 'a' (str) to file 'a.txt'.

In [20]: cat a.txt
stored string

# ファイルに追記する
In [21]: store a >> a.txt
Writing 'a' (str) to file 'a.txt'.    

In [22]: cat a.txt
stored string
stored string

In [24]: store
Stored variables and their in-db values:
a             -> 'stored string'
b             -> [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
c             -> "It's c!"

# 保存しているデータを削除
In [25]: store -d c

In [26]: store
Stored variables and their in-db values:
a             -> 'stored string'
b             -> [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]

# 保存しているデータを全て削除する
In [27]: store -z

In [28]: store
Stored variables and their in-db values:

その他

%pfile, %pinfo, %color_info, %colors, %lsmagic, %quickref。情報とか色とかその辺もろもろ。

# オブジェクトの情報が見れる(「?」でも一緒。?range とか range? とか)
In [45]: pinfo range
Type:           builtin_function_or_method
Base Class:     <type 'builtin_function_or_method'>
String Form:    <built-in function range>
Namespace:      Python builtin
Docstring:
    range([start,] stop[, step]) -> list of integers
    
    Return a list containing an arithmetic progression of integers.
    range(i, j) returns [i, i+1, i+2, ..., j-1]; start (!) defaults to 0.
    When step is given, it specifies the increment (or decrement).
    For example, range(4) returns [0, 1, 2, 3].  The end point is omitted!
    These are exactly the valid indices for a list of 4 elements.

# シンタックスハイライトされたファイルの中身を見れる(less みたいな感じ)
In [46]: pfile .zshrc

# 色のありなしをトグル
In [49]: %color_info
Object introspection functions have now coloring: OFF

In [50]: %color_info
Object introspection functions have now coloring: ON

# カラースキームを変更する(デフォルトは Linux)
In [52]: %colors LightBG

In [53]: %colors Linux

# マジックファンクション一覧
In [55]: lsmagic
Available magic functions:
%Exit  %Pprint  %Quit  %alias  %autocall  %autoindent  %automagic  %bg  %bookmark  %cd  %clear  %color_info  %colors  %cpaste  %debug  %dhist  %dirs  %doctest_mode  %ed  %edit  %env  %exit  %hist  %history  %logoff  %logon  %logstart  %logstate  %logstop  %lsmagic  %macro  %magic  %p  %page  %pdb  %pdef  %pdoc  %pfile  %pinfo  %popd  %profile  %prun  %psearch  %psource  %pushd  %pwd  %pycat  %quickref  %quit  %r  %rehash  %rehashx  %rep  %reset  %run  %runlog  %save  %sc  %store  %sx  %system_verbose  %time  %timeit  %unalias  %upgrade  %who  %who_ls  %whos  %xmode

Automagic is ON, % prefix NOT needed for magic functions.

# チートシート的なものが見れる
In [56]: %quickref

実行時間の計測

%timeit を使う。%timeit -n100 sample(a, b) とか。
IPython の timeit で実行時間計測 - 人生いきあたりばったりで生きてます@はてな

実行中にモジュールやらの再読み込み

%run, %reload, %dreload を使う。だいたい %run で OK。
iPython を起動中にモジュールを再読み込みさせたい - 人生いきあたりばったりで生きてます@はてな


他にもまだまだいっぱいあるけど、今んとこ便利だなーと思ってるのはこんくらい。
とりあえず store 便利!「?」便利!pfile も(微妙に文字化けするけど)便利!
そして地味に関数実行のショートカット便利!


ほんと、見てみるもんですねー。ドキュメント。
404 Not Found


ってこんなんやっとる場合じゃねぇや。