Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

Python東海Vol.5 IPythonをマスターしよう

40,190 views

Published on

Python東海Vol.5 発表資料。
IPythonをマスターしよう by Hiroshi Funai

Published in: Technology
  • Be the first to comment

Python東海Vol.5 IPythonをマスターしよう

  1. 1. IPythonをマスターしよう Python東海 Vol.5 株式会社モノスペース 船井 裕 hfunai@gmail.com
  2. 2. IPython? Pythonの拡張インタラクティブシェル タブ補完 オブジェクトのイントロスペクション システムシェルへのアクセス 特殊コマンド などなど
  3. 3. インストール $ easy_install IPython $ ipython Windows or Mac 環境は readline を別途インストー ルしないとだめかも
  4. 4. 基本的な使い方 Basic Usage
  5. 5. タブ補完 例えば、sys モジュールのメソッド、属性を表示したい In [1]: import s[TAB] # <- sまでタイプしてTAB モジュール補完候補表示 set setattr slice sorted staticmethod str sum super sys In [2]: import sys In [3]: sys.[TAB] # <- sys.までタイプしてTAB補完候補表示 In [4]: sys.__class__ .sys.__class__ sys.__delattr__ ...
  6. 6. イントロスペクション 例えば、re モジュールについて調べたい In [1]: import re In [2]: re? # オブジェクトに関する情報を表示(省略あり) In [3]: re?? # オブジェクトに関する情報を表示(省略なし) In [4]: %pdoc re # docstring表示 In [5]: %pdef re.search # re.searchの宣言部表示 In [6]: %psource re.search #re.search メソッドのソースコード表示 In [7]: %pfile re.search #re.search が定義されているファイルのソースコードを表示
  7. 7. マジックコマンド IPythonの独自のコマンド %[TAB] #マジックコマンドの一覧 %alias %autocall %autoindent ... ※automagicがON(デフォルトでON)だと、%を付けなくても実行できる。 In [1]: alias #これで実行できる ところでマジックコマンドに定義されてないのに、ls とかが動くのはなぜ? %alias #シェルコマンドがマップされている [('cat', 'cat'), ('clear', 'clear'), ('less', 'less'), ('mkdir', 'mkdir'), ...] %alias d date # エイリアスの追加。 dと打つとdateが実行される
  8. 8. シェルアクセス IPythonを終了せずにシェルコマンドを実行したい In [1]: !cal # cal コマンドが直接シェルに渡される In [2]: d = !date # date コマンドの結果を d に代入 In [3]: d # <class 'IPython.genutils.SList'> 特殊なリストになる In [4]: !echo $$PATH # $$で環境変数へのアクセス
  9. 9. キャッシュ アウトプットキャッシュ Out という辞書に格納 _1 == Out[1] == _oh[1] _, __, ___ ※ 最新3つの履歴 インプットキャッシュ In という辞書に格納 _i1 == In[1] _i, _ii, _iii ※ 最新3つの履歴 In [1]: print datetime.now() datetime.nowをもう一回実行したい In [2]: _i1 # これだと文字列が入ってるだけなので Out[2]: u'print datetime.now()n' In [3]: exec _i1 #ひとつ前のを実行なら、 exec _i だけでもオッケー。もしくは、%r でも可。
  10. 10. 履歴 In [1]: _dh # cd したディレクトリが入った辞書(終了後も保存) In [2]: _oh # Out の履歴が入った辞書 In [3]: %hist # 実行コマンド履歴(In の履歴) In [4]: %rep # 直前のOutを次のプロンプトに表示 In [0]: spam = python In [1]: spam Out [1]: python In [2]: %rep In [3]: python %rep に引数を渡すことも出来る。 %rep 1 とか %rep 1-3 5 とか %rep datetime とかも可 しかし、なぜか自分の Leopard python2.5.1 ipython0.91で動かない!Linuxでは動いた。 %rep datetime と文字列を指定した 場合は、履歴をたどって最初にその 文字列が見つかったOutを使用する
  11. 11. ブックマーク よく行くディレクトリをブックマークしておきたい In [1]: %bookmark home #カレントディレクトリをブックマーク In [2]: %bookmark -l #ブックマーク一覧 Current bookmarks: home -> /Users/hfunai In [3]: cd -b home # home=/Users/hfunai へ移動 In [4]: %bookmark -d home # ブックマークからhomeを削除 ブックマークは、IPythonを終了しても保存される
  12. 12. 応用的な使い方 Advanced Usage
  13. 13. ディレクトリスタック In [1]: %pushd # カレントディレクトリをスタックに入れる Out[0]: [' '] In [2]: %dirs # ディレクトリスタックを表示 Out[1]: [' '] In [3]: %cd /SourceCodes In [4]: %pushd # カレントディレクトリをスタックに入れる Out[3]: [' /SourceCodes', ' '] In [5]: %cd /usr/lib/python2.5/site-packages/ In [6]: %popd # ディレクトリスタックの[0]へ移動 In [7]: %pwd # '/Users/hfunai/SourceCodes' を表示
  14. 14. ストレージ IPython終了後も値を保存しておいて、また使いたい In [1]: spam = Python Tokai In [2]: %store spam 一旦、IPythonを終了 In [1]: spam Out[1]: 'python tokai' #spamを上書き In [2]: spam = Python Nagoya In [3]: store -r spam # Python Tokai が復活(もう一度保存するまで前の値が残ってる) In [4]: store -d spam # Python Tokai がをストレージから削除 In [5]: store # 引数なしだと一覧表示
  15. 15. マクロ %macro [マクロ名] 1-3 5 In [1]: import os In [2]: import sys ln [3]: import re In [4]: from datetime import datetiem # spellミス! In [5]: from datetime import datetime %macro mymacro 1-3 5 # 4は飛ばす In [6]: mymacro #マクロを実行 マクロはストレージに 保存しておくと便利
  16. 16. ログ ログをファイルに保存する %logstart In [1]: import os In [2]: import sys In [3]: import re %logstop # %logoffで一時的に停止、%logonで再開 IPythonを抜けて、シェルで実行 $ ipython -logplay ipython_log.py ログファイルの内容を実行してから、IPythonシェルが開始する。
  17. 17. ソースコード編集 In [1]: %cpaste #クリップボードにあるソースをペーストしたいとき In [2]: %edit #エディタを開いて編集(設定ファイルでエディタを指定) In [3]: %edit 1-10 #1-10のInをエディタで In [4]: %save 1-10 #1-10のInをファイルへ保存 簡易バージョン管理 %editごとに一時ファイルが作成されるのを利用 In [5]: %edit _i2 # In [2] の内容を編集 In [6]: %edit _i3 # In [3] の内容を編集 クラスとか関数を定義したいとき は、%editで書くと、便利。 export EDITOR=vim しておきましょう。 簡易バージョン管理は別に使わない よなあ。
  18. 18. doctestへの対応 起動オプションで対応 $ ipython -cl # クラシックモード。プロンプトを >>> にする。 ※ただし、インプットキャッシュとか一部の機能が使えなくなる。 起動中に一時的に変更 %doctest_mode # プロンプトが >>> になる %hist -tn #ヒストリを行番号表示なしで %hist -tnの内容を%doctest_modeにしてからコピペ %doctest_mode を再実行すると通常モードに戻る
  19. 19. その他のコマンド %rehash # $PATHを見てコマンドすべてを%aliasに入れる %rehashx # rehashと一緒だけど、exectableかチェックする %who # 名前空間を表示 %whos %who_ls とか %reset # 名前空間のリセット 変数とか全部消える %clear # Input,Outputなどの履歴を消去 %run # IPython上でPythonスクリプトファイルを実行する %timeit # ベンチマーク的なもの %pycat # Pythonファイルをソースコードハイライトして表示 %bg # 別スレッドをたててバックグラウンドでスクリプトを実行 %quickref # IPythonチートシート
  20. 20. 設定ファイル 起動後の挙動を変更する /.ipython/ipy_user_conf.py 他にもrcファイルがあるけど、 このファイルは起動時に必ず読み込まれるので、とりあえずはこちら を編集。ただ、このファイルとrcファイルとは記述が異なる。こっちはpythonスクリプト。 プロファイル プロファイルは、rcファイルを編集。 /.ipython/の中にipythonrc-[プロファイル名] というファイルを作成して、起動オプションでプロファイルを指定する。 $ ipython -p [プロファイル名] 常に使用したい設定はipy_user_conf.pyに書いて、場合によって変えたい設定はrcでプロファイルを 指定してって感じの使い分けをしたらいいのかな。
  21. 21. 参考文献 本家のドキュメント http://ipython.scipy.org/doc/rel-0.9.1/html/

×