1、IPython簡介
ipython是一個python的交互式shell,比默認的python shell好用得多,支持變量自動補全,自動縮進,支持bash shell命令,內置了許多很有用的功能和函數。學習ipython將會讓我們以一種更高的效率來使用python。同時它也是利用Python進行科學計算和交互可視化的一個最佳的平台。
IPython提供了兩個主要的組件:
1.一個強大的python交互式shell
2.供Jupyter notebooks使用的一個Jupyter內核(IPython notebook)
IPython的主要功能如下:
1.運行ipython控制台
2.使用ipython作為系統shell
3.使用歷史輸入(history)
4.Tab補全
5.使用%run命令運行腳本
6.使用%timeit命令快速測量時間
7.使用%pdb命令快速debug
8.使用pylab進行交互計算
9.使用IPython Notebook
2、安裝IPython
ipython支持Python2.7版本或者3.3以上的版本
pip install ipython
以上這條命令可以自動安裝IPython以及它的各種依賴包,但是如果我們想在notebook中操作ipython的話,我們還需要安裝jupyter:
pip install jupyter
3、使用IPython的兩種方式
Python支持所有python的標准輸入輸出,也就是我們在IDLE中或者Python shell中能用的,在IPython中都能夠使用,唯一的不同之處使ipython會使用In [x]和Out [x]表示輸入輸出,並表示出相應的序號。In和Out是兩個保存歷史信息的變量
交互式
直接打開命令行或者終端,輸入ipython,即可進入ipython環境

Jupyter notebook
Jupiter notebook就類似於ipython的編輯器,他是一個文本工具,它是在你電腦本地開了一個服務端,將它運行在瀏覽器上。
windows,mac通用啟動命令:jupyter notebook

4、IPython基礎功能
ipython快捷鍵
- Ctrl-P 或上箭頭鍵 后向搜索命令歷史中以當前輸入的文本開頭的命令
- Ctrl-N 或下箭頭鍵 前向搜索命令歷史中以當前輸入的文本開頭的命令
- Ctrl-R 按行讀取的反向歷史搜索(部分匹配)
- Ctrl-Shift-v 從剪貼板粘貼文本
- Ctrl-C 中止當前正在執行的代碼
- Ctrl-A 將光標移動到行首
- Ctrl-E 將光標移動到行尾
- Ctrl-K 刪除從光標開始至行尾的文本
- Ctrl-U 清除當前行的所有文本譯注12
- Ctrl-F 將光標向前移動一個字符
- Ctrl-b 將光標向后移動一個字符
- Ctrl-L 清屏
5、IPython高級功能
一些常用的高級功能比如:
- TAB鍵自動完成
- ?:內省、命名空間搜索
- !:執行系統命令
以及一系列魔術命令
5.1、魔術命令:以%開始的命令
%run:執行文件代碼
“”“
類似於Cpython中在命令行中 python+文件路徑
”“”
%paste:執行剪貼板代碼
%timeit:評估運行時間 # 補充一個:%%time
%pdb:自動調試
IPython常用的魔術命令:
| 方法 | 描述 |
|---|---|
| %quickref | 顯示IPython的快速參考 |
| %magic | 顯示所有魔術命令的詳細文檔 |
| %debug | 從最新的異常跟蹤的底部進入交互式調試器 |
| %hist | 打印命令的輸入(可選輸出)歷史 |
| %pdb | 在異常發生后自動進入調試器 |
| %paste | 執行剪貼板中的Python代碼 |
| %cpaste | 打開一個特殊提示符以便手工粘貼待執行的Python代碼 |
| %reset | 刪除interactive命名空間中的全部變量/名稱 |
| %page OBJECT | 通過分頁器打印輸出OBJECT |
| %run script.py | 在IPython中執行一個Python腳本文件 |
| %prun statement | 通過cProfile執行statement,並打印分析器的輸出結果 |
| %time statement | 報告statement的執行時間 |
| %timeit statement | 多次執行statement以計算系綜平均執行時間。對那些執行時 間非常小的代碼很有用 |
| %who、%who_ls、%whos | 顯示interactive命名空間中定義的變量,信息級別/冗余度可變 |
| %xdel variable | 刪除variable,並嘗試清除其在IPython中的對象上的一切引用 |
