Heavy Watal

IPython — 強力な対話型Python実行環境

対話型実行環境

起動

ターミナルから ipython を実行するか、 普通の対話Pythonから:

import IPython
IPython.start_ipython(argv=[])

とりあえずドキュメントを読む:

?
%quickref

文脈を考慮したタブ補完

定義済み変数などはある程度 rlcompleter でも補完できるが、 IPython はさらに文脈を考慮して賢い補完をしてくれる:

import o[TAB]
import os.[TAB]
open('~/.[TAB]')

履歴

Object introspection

関数がどんな引数をとるか、 クラスがどんなメンバを持っているか、 などをパッと覗くことができる。 help() コマンドの強力版。

先頭(か末尾)にクエスチョンをつけるだけ:

?os
??os

システムコマンド実行

頭にエクスクラメーションをつけるだけ:

!pwd
files = !ls

マジックコマンド

環境設定

% ipython help profile
% ipython profile create [name]
% ipython profile list
% ipython profile locate
% ipython --profile=<name>

~/.ipython/profile_default/ipython_config.py

起動時に自動的に pandasmatplotlib を読み込むとか。 automagicを切るとか。

Hydrogen

Atom エディタ内で実行結果を確認できるようにする拡張。 普通の .py ファイルだけでなく .md 内のコードブロックでも使える。

% pip install ipykernel
% python -m ipykenel install --user
% apm install hydrogen
key action
cmd-enter hydrogen:run
alt-cmd-enter hydrogen:run-cell
shift-enter hydrogen:run-and-move-down
alt-shift-enter hydrogen:run-cell-and-move-down
ctrl-cmd-enter hydrogen:run-all
alt-cmd-backspace hydrogen:clear-results

# %% でcellを区切れる。

Jupyter Notebook

ウェブブラウザ上で動く対話的実行環境。 元はIPython Notebookだったが、 カーネルを入れ替えることで他言語サポートが可能になり、 汎用Notebookとして生まれ変わった。

Markdown/LaTeX記法による見出し・コメント・数式とともに ソースコードと実行結果をひと括りに保存しておけるので、 研究ノートのような使い方に向いている。 Mathematica/Mapleの使い勝手に似ている。 ノートブック形式 .ipynb がGitHub上で直接閲覧できるようになったのも便利。

ソースコードがインプット・アウトプット混在の複雑なテキストになるので、 コマンドラインやGit上での取り回しが悪いのは致命的な欠点。 ターミナルやテキストエディタに馴染みのない非プログラマ向けの道具という印象。 同じ用途なら Rmarkdown のほうが好みだし将来性があるように思う。

始め方

  1. ターミナルから起動: jupyter notebook [file or directory]
  2. ウェブブラウザで http://localhost:8888/tree が立ち上がる
  3. 右上の New から適当なNotebookカーネル (e.g., Python 3) を選択
  4. In [ ]: の右の箱に適当なPythonコマンドを入れて shift-return
  5. 左上の File から適当に保存してブラウザを閉じる
  6. ターミナルから control-c で終了

キーボードショートカット

key action
esc enter command mode
enter enter edit mode
h show keyboard shortcuts
y to code
m to markdown
a insert cell above
b insert cell bellow
dd delete selected cells
ctrl-return run selected cells

書籍