IPythonの高度な使用法

このツールは、ほとんどのPython開発者になじみがあります。

同時に、この対話型シェルが提供する高度な機能を疑う人はほとんどおらず、ほとんどが自動補完を使用しています。



ターミナル2014 python 2014 125ճ0画像



この記事は、広範で理解しやすい美しいドキュメントipython.github.com/ipython-doc/dev/interactive/index.htmlからの抜粋に基づいています

オートコンプリートや、呼び出しの間に保存されたチームの履歴などの明らかなことはスキップします。





オブジェクトの概要



In [1]: import datetime

In [2]: datetime?

Type: module

Base Class: <type 'module'>

String Form: <module 'datetime' from '/usr/local/Cellar/python/2.7.1/lib/python2.7/lib-dynload/datetime.so'>

Namespace: Interactive

File: /usr/local/Cellar/python/2.7.1/lib/python2.7/lib-dynload/datetime.so

Docstring:

Fast implementation of the datetime type.








ご覧のとおり、オブジェクトに関するかなり詳細な情報が得られ、デバッグ時に役立ちます。 特別なコマンド%pdoc%pdef%psource 、および%pfileもあります。これらはそれぞれ、ドキュメント、関数の定義、ソースコード、ファイルの完全なコードを確認するのに役立ちます。



json.dumps%pdefコマンドからの出力例:



In [8]: %pdef json.dumps

json.dumps(obj, skipkeys=False, ensure_ascii=True, check_circular=True, allow_nan=True, cls=None, indent=None, separators=None, encoding='utf-8', default=None, **kw)








%実行コマンド



このコマンドを使用して、Pythonスクリプトを実行し、インタラクティブシェルスペースですべてのデータに直接アクセスできます。



これは、特定のモジュールを開発していて、そのデータを便利な方法でテストおよび操作できるようにする場合に非常に便利です。



ランタイム(-t)の測定、デバッガー(-d)またはプロファイラー(-p)での実行を可能にする特定のキーセットがあります。



IPythonが提供するマジックコマンドに関する情報をブラッシュアップする必要がある場合は、いつでもヒント( %run? )を使用できます。



出力結果のキャッシュ



IPythonを使用する場合、各入力と出力にはラベルがあります。



In [11]: a = 9

In [12]: a

Out[12]: 9








出力を特定の変数に割り当てることなく出力を処理できるため、これは有望です。 これを行うには、 _label_numberまたは単に_、__、___の構文を使用して、最後の3つの結論を参照します。



In [13]: _

Out[13]: 9

In [14]: _ + 8

Out[14]: 17

In [15]: _

Out[15]: 17

In [16]: _13

Out[16]: 9








出力抑制



場合によっては、コマンドの出力が非常に大きくなり、作業が遅くなり、コンソールに不要な情報が散らかることがあります。



In [21]: "*"*100500;

In [22]:








式の最後にセミコロンを置くことにより、結果の出力を表示するカテゴリカルな不本意を報告します。



入力履歴



入力した行の履歴を表示および操作できるコマンドが2つあります: %histおよび%rep



In [22]: %hist

1 : import datetime

2 : import json

3: a = 9

4: a

In [23]: %rep 1

In [24]: import datetime <- .








シェルを終了せずにシステムコマンドを呼び出す



コマンドを使用する そして!! 、ls、cdなどのシステムシェルコマンドを実行できます。 コマンドの違いは、最初のコマンドがシステムコマンドを実行するだけであり、2番目のコマンドはこれらのコマンドの出力を取得して使用できることです。



In [26]: !ls

Archive Development Downloads Library Music Pictures VirtualBox VMs

Desktop Documents Dropbox Movies My Projects



In [27]: !!ls

Out[27]: SList (.p, .n, .l, .s, .grep(), .fields(), sort() available):

0: Archive

1: Desktop

2: Development

3: Documents

4: Downloads

5: Dropbox

6: Library

7: Movies

8: Music

9: My

10: Pictures

11: Projects

12: VirtualBox VMs








複数行編集



IPythonは複数行を必要とする式を認識することができるため、これには特に問題はありませんが、成長する余地があります。 %editコマンドはあなたの生活を改善し、対話型シェルで関数やクラスを直接定義することを避けることができます。



%editコマンドを入力すると、IPythonはシステムエディターを開き、通常の方法でコードを編集できます。



In [28]: %edit

IPython will make a temporary file named: /var/folders/9Q/9Q8AwQvdEUubQ84MwFcKt++++TI/-Tmp-/ipython_edit_YPjrQx.py

Editing... done. Executing edited code...

Out[28]: 'def amicool():\n\treturn True\n'

In [29]: amicool()

Out[29]: True

In [30]:








以前に入力したコードでエディターを開くことができます。これには、 %edit -pコマンドを使用します

以前に編集したコードにアクセスするには、構文%edit _ output_numberを使用できます。この場合、これは%edit _28と同等です



作成された識別子を表示する



ここに置いておきます。



In [32]: %who

a amicool datetime json



In [33]: %whos

Variable Type Data/Info

--------------------------------

a int 9

amicool function <function amicool at 0x1014f2848>

datetime module <module 'datetime' from '<...>lib-dynload/datetime.so'>

json module <module 'json' from '/usr<...>on2.7/json/__init__.pyc'>



In [34]:








コード実行時間の測定



単純な%timeおよび%timeitコマンドを使用して、個々のコードのパフォーマンスを測定できます。



In [45]: %timeit [1,2,3,4,5][2]

1000000 loops, best of 3: 236 ns per loop



In [46]: %timeit (1,2,3,4,5)[2]

10000000 loops, best of 3: 34.3 ns per loop



In [54]: %time [1,2,3,4,5][2]

CPU times: user 0.00 s, sys: 0.00 s, total: 0.00 s

Wall time: 0.00 s

Out[55]: 3











繰り返しになりますが、 ipython.github.com / ipython-doc / dev / interactive / index.htmlのドキュメントへのリンクを思い出してください。このリンクには、この貧弱な記事では取り上げられていない興味深い機能が数多くあります。 画像







All Articles