Works by

Ren's blog

@rennnosuke_rk 技術ブログです

【Python】IPythonをつかう

IPython

Pythonをインストールすると、標準のインタラクティブシェルがすでに使えるようになっているが、 別のPythonインタラクティブシェルであるIPythonを使うとより快適にPythonコードを実行できる。

インストール

pip install ipython

んで

$ ipython2

bash-3.2$ ipython2
Python 2.7.6 (default, Sep  9 2014, 15:04:36) 
Type "copyright", "credits" or "license" for more information.

IPython 3.1.0 -- An enhanced Interactive Python.
?         -> Introduction and overview of IPython's features.
%quickref -> Quick reference.
help      -> Python's own help system.
object?   -> Details about 'object', use 'object??' for extra details.

In [1]: 

IPythonではプロンプト上の入力部分がインタラクティブシェルのような>>>ではなく、In [1]のように入力回数をあらわすものになっている。

自動補完

In [1]: im<TAB>

In [1]: import

複数の候補があると、一覧表示される。

In [1]: __<TAB>
__                 __builtin__        __name__
__IPYTHON__        __debug__          __package__
__IPYTHON__active  __doc__            
___                __import__

情報の参照

IPython中で定義した変数の後に???を付加すると、様々な情報を取ってこれる。

In [12]: obj = 1

In [13]: obj?
Type:        int
String form: 1
Docstring:
int(x=0) -> int or long
int(x, base=10) -> int or long

Convert a number or string to an integer, or return 0 if no arguments
are given.  If x is floating point, the conversion truncates towards zero.
If x is outside the integer range, the function returns a long instead.

If x is not a number or if base is given, then x must be a string or
Unicode object representing an integer literal in the given base.  The
literal can be preceded by '+' or '-' and be surrounded by whitespace.
The base defaults to 10.  Valid bases are 0 and 2-36.  Base 0 means to
interpret the base from the string as an integer literal.
>>> int('0b100', base=0)
4

履歴を残す

標準インタラクティブシェルを終了すると、以前の実行履歴は消えてなくなってしまう。 IPythonは、逐次実行履歴をpythonファイルとして残しておける。

In [1]: %logstart log.py
Activating auto-logging. Current session state plus future input saved.
Filename       : log.py
Mode           : backup
Output logging : False
Raw input log  : False
Timestamping   : False
State          : active

In [2]: print ('%logstartでログ開始')
%logstartでログ開始

In [3]: %logoff
Switching logging OFF

In [4]: print ('%logoffでログ一時中断')
%logoffでログ一時中断

In [5]: %logon
Switching logging ON

In [6]: print ('%logonで再開')
%logonで再開

In [7]: %logstop

In [8]: print ('%logstopでログ終了')
%logstopでログ終了

ログはこんな感じ↓

# IPython log file

get_ipython().magic(u'logstart log.py')
print ('%logstartでログ開始')
get_ipython().magic(u'logoff')
print ('%logonで再開')
get_ipython().magic(u'logstop')

シェルコマンドの実行

インタラクティブシェル上でシェルコマンドもできる。 !+[シェルコマンド]で使用可能。

In [18]: !ls
Applications            Sensor-Bin-MacOSX-v5.1.2.1
Desktop             TEST
Documents           apatch
Downloads           bin
Dropbox             build
Library             dotfiles
Movies              ...