今更ながらIPythonを使い始めました。
IPythonはPython用のインタラクティブシェルで、標準のものとは違って補完機能や自動インデント、シェルコマンドの実行などの色々と便利な機能がついています。
並列処理にも使えるみたいですが、その辺りはまだ調べていません。
便利な機能
IPythonのドキュメントを見るとたくさん書いてあって読み切れていないんですが、いくつか便利そうだと思った機能を紹介しておきます
ヘルプ
?
や
%quickref
と打つとIPythonの説明が読めます。後者のほうがわかりやすいです
%で始まるコマンドはマジックコマンドという機能で、
%magic
と打つとそれぞれの詳しい説明が読めます。
ちなみに先頭の%がなくても動きます
補完機能
モジュール名や関数名、変数名の入力途中でタブキーを押すだけです
履歴
途中まで打ってからCtrl+p, Ctrl+nや↑↓で、その文字列から始まる履歴のコマンドをたどれます。
またCtrl+rで履歴からの検索ができます
他にも入出力結果の履歴も保存されています
コードの貼り付け
%paste
をするとクリップボードからペーストされて、コマンドが実行されます
また以下のように>>>などを先頭に含むコードでもIPythonではそのまま動きます
>>> for i in xrange(10): ... print i
オートインデント
forなどでインデントしたときに、それ以降もインデントが続きます
オブジェクトの説明を見る
オブジェクト名の後に?で説明、??でソースコードまで見れます(見れるものなら)
例えば組み込み関数のsumに対して
sum?
とすると
Type: builtin_function_or_method String Form:<built-in function sum> Namespace: Python builtin Docstring: sum(sequence[, start]) -> value Returns the sum of a sequence of numbers (NOT strings) plus the value of parameter 'start' (which defaults to 0). When the sequence is empty, returns start.
のような出力が得られます。
また?でマジックコマンドの説明も見れます
マジックコマンド名?
処理時間の計測
%timeit
や
%time
を使うと処理時間の計測ができます。
例えば
%timeit sum(xrange(1, 10000000))
と打つと
1 loops, best of 3: 669 ms per loop
と表示されます。
ループ数などは'-r 5'などとすると指定出来ます。
同様に
%time sum(xrange(1, 10000000))
とすると以下のような結果が得られます
CPU times: user 0.73 s, sys: 0.00 s, total: 0.73 s Wall time: 0.73 s
シェルコマンドの実行
!の後にコマンドを打つとシェルコマンドが実行出来ます。
!ping localhost
またコマンドの実行結果を変数に代入できます
result = !ls
ログ
%logstart ファイル名
でファイル名へのログの保存を開始して
%logstop
で終了します。
インタラクティブシェルで実行したコマンドが記録されます。
変数一覧の表示
%whos
エディタの利用
インタラクティブシェルの途中でエディタを使って編集ができます。
ただし一時ファイルを利用しているので、もしも保存したいときには一手間かかります。
また利用するエディタは変更できます。
%edit