Linux-IPython使用手冊(cè)
IPython是python的一個(gè)交互式shell,它比默認(rèn)的“python shell”更方便熄求,支持變量自動(dòng)補(bǔ)全,自動(dòng)縮進(jìn),支持 bash shell 命令贮折,內(nèi)置了許多強(qiáng)大的功能和函數(shù)。
IPython 是基于BSD 開(kāi)源的资盅,并且IPython為交互式計(jì)算提供了一個(gè)豐富的架構(gòu)调榄。
IPython特色
- 強(qiáng)大的交互式shell
- 供Jupyter notebooks使用的Jupyter內(nèi)核
- 交互式的數(shù)據(jù)可視化工具
- 靈活、可嵌入的解釋器
- 易于使用呵扛,高性能的并行計(jì)算工具
IPython使用技巧
IPython中 %
調(diào)用IPython命令
Tab鍵自動(dòng)補(bǔ)全
在shell中輸入表達(dá)式時(shí)每庆,按下Tab鍵可將當(dāng)前命名空間中任何與已輸入的字符串相匹配的變量(對(duì)象、函數(shù)等)顯示出來(lái)
中斷正在執(zhí)行的代碼
當(dāng)代碼正在執(zhí)行時(shí)今穿,需要終止代碼運(yùn)行缤灵,則只需按下“Ctrl+C”,就會(huì)引發(fā)一個(gè)KeyboardInterrupt蓝晒,除一些特殊的情況以外腮出,絕大部分Python程序會(huì)立即停止執(zhí)行。
鍵盤(pán)中的快捷鍵
使用IPython編碼時(shí)還可使用鍵盤(pán)快捷鍵來(lái)快速完成所需操作芝薇,常用的鍵盤(pán)快捷鍵(IPython環(huán)境下)如下表所示胚嘲。
內(nèi)置命令-記錄 (%logstart)
記錄輸入的命令
In [2]: %logstart
Activating auto-logging. Current session state plus future input saved.
Filename : ipython_log.py
Mode : rotate
Output logging : False
Raw input log : False
Timestamping : False
State : active
內(nèi)置命令-執(zhí)行系統(tǒng)命令 (!)
In [6]: !hostname
neo4j.yinsho.com
內(nèi)置命令-內(nèi)省 (?)
當(dāng)某對(duì)象的信息不是很明確時(shí),可以在變量的前面或后面加上問(wèn)號(hào)(洛二?)馋劈,有關(guān)該對(duì)象的一些通用信息就會(huì)顯示出來(lái),如下圖所示晾嘶。
# 查看變量或函數(shù)
In [4]: ?a
Type: int
String form: 1
Docstring:
int(x=0) -> int or long
int(x, base=10) -> int or long
# 打印函數(shù)的源碼
In [15]: func??
Signature: func()
Source:
def func():
print("hello world")
File: /<ipython-input-13-4475a92670e6>
Type: function
內(nèi)置命令-執(zhí)行文件代碼 (%run)
In [29]: !vi test.py
In [30]: !cat test.py
def func1():
print("hello world")
func1()
In [31]: %run "test.py"
hello world
目錄書(shū)簽系統(tǒng) (%bookmark)
目錄書(shū)簽妓雾,類似于快捷方式
# 定義 local 書(shū)簽
In [37]: %bookmark local /usr/local
# 查看所有書(shū)簽
In [38]: %bookmark -l
Current bookmarks:
local -> /usr/local
# 使用書(shū)簽.
In [39]: cd local
(bookmark:local) -> /usr/local
/usr/local
# 覆蓋之前書(shū)簽
In [41]: %bookmark local /etc/sysconfig
其他命令
- %paste和%cpaste命令執(zhí)行剪帖板代碼
- 使用上箭頭或下箭頭可以查看上一條命令或下一條命令的歷史
- _i48 執(zhí)行第48條命令
- __ 執(zhí)行前面倒數(shù)第一條命令
- 輸入與輸出主要是使用 、_变擒、_X君珠、_iX,這里的X表示行號(hào)
- %dhist :打印目錄訪問(wèn)的歷史
- %env :以dict的形式返回系統(tǒng)的環(huán)境變量
Ipython高級(jí)使用
日志處理娇斑、代碼調(diào)試策添、性能分析、自定義主題
IPython附件
快捷鍵
快捷鍵 | 作用 |
---|---|
Ctrl+P或向上箭頭 | 后向搜索命令 |
Ctrl+N或向下箭頭 | 前向搜索命令 |
Ctrl+R | 按行讀取反向歷史搜索(部分匹配) |
Ctrl+Shift+V | 從剪切板粘貼文本 |
Ctrl+A | 將光標(biāo)移動(dòng)到行首 |
Ctrl+E | 將光標(biāo)移動(dòng)到行尾 |
Ctrl+K | 刪除從光標(biāo)開(kāi)始至行尾的文本 |
Ctrl+U | 清除從光標(biāo)開(kāi)始至行首的文本 |
Ctrl+F | 將光標(biāo)向前移動(dòng)一個(gè)字符 |
Ctrl+B | 將光標(biāo)向后移動(dòng)一個(gè)字符 |
Ctrl+L | 清屏 |
魔術(shù)命令
%quickref 顯示ipython的快速參考
%magic 顯示所有的魔術(shù)命令的詳細(xì)文檔
%debug 從最新的異常跟蹤的底部進(jìn)入交互式調(diào)試器
%hist 打印命令的輸入(可選輸出)歷史
%pdb 在異常發(fā)生后自動(dòng)進(jìn)入調(diào)試器
%paste 執(zhí)行剪貼板中的python代碼
%cpaste 打開(kāi)一個(gè)特殊提示符以便手工粘貼待執(zhí)行的python代碼
%reset 刪除interactive命名空間中的全部變量/名稱
%page OBJECT 通過(guò)分頁(yè)器打印輸出object
%run script.py 在ipython中執(zhí)行一個(gè)python腳本文件
%prun statement 通過(guò)cprofile執(zhí)行statement,并打印分析器的輸出結(jié)果
%time statement 報(bào)告statement的執(zhí)行時(shí)間
%timeit statement 多次執(zhí)行statement以計(jì)算系統(tǒng)平均執(zhí)行時(shí)間.對(duì)那么執(zhí)行時(shí)間非常小的代碼很有用
%who,%who_id,%whos 顯示interactive命名空間中定義的變量,信息級(jí)別/冗余度可變
%xdel variable 刪除variable,并嘗試清除其在ipython中的對(duì)象上的一切引用
調(diào)試器命令 (%debug)
debug調(diào)試器樣例
In [11]: %debug
> <ipython-input-10-0ee88489e9f0>(1)<module>()
----> 1 func%debug
ipdb>
設(shè)置斷點(diǎn)單步調(diào)度
%run -d script.py
s 進(jìn)入腳本 毫缆,
b 13 # 在13行設(shè)置斷點(diǎn)
c # continue till touch the break point
n # 執(zhí)行下一行唯竹。
如果有exception 報(bào)出:throws_an_exception ,
ipdb> s # 單步進(jìn)入 exception 那行.
ipdb> !a #在變量a 前加 ! 查看 變量?jī)?nèi)容
pdb 是 python 自帶的一個(gè)包,為 python 程序提供了一種交互的源代碼調(diào)試功能苦丁,
主要特性包括設(shè)置斷點(diǎn)浸颓、單步調(diào)試、進(jìn)入函數(shù)調(diào)試、查看當(dāng)前代碼产上、查看棧片段棵磷、動(dòng)態(tài)改變變量的值等。pdb 提供了一些常用的調(diào)試命令
pdb 調(diào)試器命令列表
h(help) 顯示命令列表
help command 顯示command的文檔
c(continue) 恢復(fù)程序的執(zhí)行
q(quit) 退出調(diào)試器,不再執(zhí)行任何代碼
b(break) n 在當(dāng)前文件的第n行設(shè)置一個(gè)斷點(diǎn)
b path/to/file.py:n 在指定文件的第n行設(shè)置一個(gè)斷點(diǎn)
s(step) 單步進(jìn)入函數(shù)調(diào)用
n(next) 執(zhí)行當(dāng)前行,并前進(jìn)到當(dāng)前級(jí)別的下一行
u(up)/d(down) 在函數(shù)調(diào)用棧中向上或向下移動(dòng)
a(args) 顯示當(dāng)前函數(shù)的參數(shù)
debug statement 在新的遞歸調(diào)試器中調(diào)用語(yǔ)句statement
l(list) statement 顯示當(dāng)前行,以及當(dāng)前棧級(jí)別上的上下文參考代碼
w(where) 打印當(dāng)前位置的完整棧跟蹤(包括上下文參考代碼)
資源
IPython用法詳解: https://www.cnblogs.com/renpingsheng/p/7759797.html