一起用ipython
安裝
安裝python2版本的軟件包就用命令
pip install ipython
安裝python3版本對(duì)應(yīng)的軟件包就用命令
pip3 install ipython
?
進(jìn)入了ipython,ipython會(huì)提示您鍵入下面四個(gè)命令之一去試著使用ipython:
命令名 說(shuō)明
? ipython特性的介紹和概述 %quickref 一份手冊(cè),包含了所有的命令 help python的幫助系統(tǒng) object? 關(guān)于object的詳細(xì)信息,如果鍵入object??會(huì)更詳細(xì)首先是推薦您看一下quickref的。您注意到了,這個(gè)命令以%開(kāi)頭。所有以%開(kāi)頭的方法,都是所謂的魔術(shù)方法(Magic function),
也就是ipython內(nèi)置的一些方法。
需要注意的是,魔術(shù)方法有%和%%之分,比如%timeit和%%timeit。這玩意在ipython中有專門的叫法,
前者叫l(wèi)ine magic后者叫cell magic。
顧名思義,前者是專門針對(duì)一行的命令,后者針對(duì)多行的命令(這是notebook中的術(shù)語(yǔ),關(guān)于notebook請(qǐng)參閱最后),如是而已。
所有的魔術(shù)方法都可以查看源碼,仔細(xì)閱讀的話,對(duì)自己寫(xiě)代碼也很有裨益,具體方法是在魔術(shù)方法后面加??,譬如%timeit??。
代碼是經(jīng)過(guò)高亮和格式化的,
應(yīng)該很容易閱讀才是。如果您有著奇妙的好奇心的話,想必剛才也嘗試過(guò)%timeit?。區(qū)別是,這次沒(méi)有源碼出現(xiàn)對(duì)吧。
但是其他信息,比如type什么的指導(dǎo)性內(nèi)容會(huì)顯示出來(lái)。
Tab鍵自動(dòng)完成
在shell中輸入表達(dá)式時(shí),只要按下Tab鍵,當(dāng)前命令控件中任何與輸入的字符串相匹配的變量(對(duì)象、函數(shù)等)就會(huì)被找出來(lái)。
ps.之前我發(fā)現(xiàn)我的ipython沒(méi)有Tab鍵自動(dòng)補(bǔ)全功能,tab鍵的功能是縮進(jìn)。最后 pip install pyreadline即可解決。
下面這個(gè)例子,輸入b.后按下<tab>鍵即可得到下圖的結(jié)果。
內(nèi)省
在變量的前面或后面加上一個(gè)問(wèn)號(hào)(?)就可以將有關(guān)該對(duì)象的一些通用信息顯示出來(lái)。這就叫做對(duì)象的內(nèi)省。
如果對(duì)象是一個(gè)函數(shù)或?qū)嵗椒?#xff0c;則其docstring也會(huì)被現(xiàn)實(shí)出來(lái)。
使用??還將顯示出該函數(shù)的源代碼。
一些字符串配以通配符(*)即可顯示出所有與該通配符表達(dá)式相匹配的名稱。
?
中斷正在執(zhí)行的代碼
按下Ctrl-C就會(huì)引發(fā)一個(gè)KeyboardInterrupt。除了一些非常特殊的情況下,絕大部分python程序都會(huì)立即停止執(zhí)行
?
執(zhí)行剪貼板中的代碼
書(shū)上說(shuō)使用ctrl+shift+v將剪貼板的代碼片段粘貼出來(lái),然而windows系統(tǒng)似乎不可行,所以鼠標(biāo)右鍵粘貼好了。
%paste可以承載剪貼板中的一切文本,并在shell中以整體形式執(zhí)行。
%cpaste跟%paste差不多,只不過(guò)它多出了一個(gè)用于粘貼代碼的特殊提示符而已。如果發(fā)現(xiàn)粘貼的代碼有錯(cuò),只需要按下ctrl+c即可終止%cpaste提示如。
?
鍵盤(pán)快捷鍵
在此粘貼給大家作為備忘。
魔術(shù)命令
魔術(shù)關(guān)鍵字以%開(kāi)頭,如果automagic打開(kāi)了,則不用輸入%,否則需要,使用automagic可以切換狀態(tài)
可以使用%magic參看所有魔術(shù)方法
命令?說(shuō)明
%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ì)算系綜平均執(zhí)行時(shí)間。對(duì)那些執(zhí)行時(shí)??間非常小的代碼很有用
%who、%who_ls、%whos?顯示interactive命名空間中定義的變量,信息級(jí)別/冗余度可變
%xdel variable?刪除variable,并嘗試清除其在IPython中的對(duì)象上的一切引用
env 顯示環(huán)境變量
ed或edit 編輯一個(gè)文件并執(zhí)行
ed -x filename 編輯文件不執(zhí)行
edit 3:10 編輯3:10行的指令并執(zhí)行
hist 顯示歷史紀(jì)錄,可以用-n增加行號(hào)
hist 3:10 顯示3-10行的歷史紀(jì)錄
bg function 把function函數(shù)放到后臺(tái)執(zhí)行
pwd 當(dāng)前目錄
pycat filename 語(yǔ)法高亮顯示一個(gè)文件
macro name 1:10 把1:10行的代碼設(shè)為name宏
save filename 1:10 把1:10行代碼保存到文件中
time statement 計(jì)算一段代碼執(zhí)行時(shí)間
timeit statement 自動(dòng)選擇重復(fù)和循環(huán)次數(shù)計(jì)算一段代碼執(zhí)行時(shí)間
run filename 執(zhí)行一個(gè)文件,如果希望防止執(zhí)行的,需要增加if name == “main“:
autoindent 如果啟用,粘貼的時(shí)候會(huì)自動(dòng)縮進(jìn)代碼
reset 重置所有變量
Bash命令
cls 清除屏幕
colors
基于Qt的富GUI控制臺(tái)
Ipython團(tuán)隊(duì)開(kāi)發(fā)了一個(gè)基于Qt框架(其目的是為終端應(yīng)用程序提供諸如內(nèi)嵌圖片、多行編輯、語(yǔ)法高亮之類的富文本剪輯功能)的GUI控制臺(tái)。
使用
ipython qtconsole --pylab=inline來(lái)啟動(dòng)的話可為其添加繪圖功能。
ps.這一步剛開(kāi)始無(wú)法執(zhí)行,我的解決方法是:
pip install qtconsole,就可以運(yùn)行了- -..
?
%run命令
在ipython會(huì)話環(huán)境中,所有文件都可以通過(guò)%run命令當(dāng)做Python程序來(lái)運(yùn)行。
輸入 %run 路徑+python文件名稱即可。
ipython一般的使用,通常只是為了測(cè)試一行或者幾行代碼是否能夠執(zhí)行。究其原因,還是因?yàn)槊钚兄袝?shū)寫(xiě)長(zhǎng)代碼相較于在文件中寫(xiě)代碼并不方便,一方面是格式,另一方面是在命令行中寫(xiě)代碼,一旦中間代碼寫(xiě)錯(cuò),修改起來(lái)還是很麻煩的。于是我們不得不一次次退出ipython,去python xxx.py執(zhí)行。或者tmux開(kāi)兩個(gè)窗口來(lái)測(cè)試。
但是其實(shí)ipython已經(jīng)提供了很方便的機(jī)制用來(lái)執(zhí)行一個(gè)腳本,就是%run命令,%run可以簡(jiǎn)化為run。
使用起來(lái)類似于熟悉的python test.py,使用run test.py就好。run命令還可以附加選項(xiàng),常用的有-t選項(xiàng),這個(gè)會(huì)在腳本執(zhí)行完后,打印出執(zhí)行的cpu timings。如果指定了-t選項(xiàng),后面可以跟一個(gè)-Nx,x代表一個(gè)數(shù)字。表示重復(fù)執(zhí)行x次。
另外比較好用的是-d選項(xiàng),這個(gè)會(huì)在pdb中運(yùn)行腳本。后跟-bxx打斷點(diǎn)。個(gè)人沒(méi)有什么python調(diào)試的經(jīng)驗(yàn),您有興趣可以親自嘗試。
還有一個(gè)-p選項(xiàng),這個(gè)選項(xiàng)會(huì)開(kāi)啟python profiler,從而打印出詳細(xì)的執(zhí)行時(shí)間、函數(shù)調(diào)用等等信息供優(yōu)化參考。
?
%timeit
這個(gè)命令用來(lái)測(cè)試一條命令執(zhí)行的時(shí)間,一般而且,會(huì)重復(fù)100次運(yùn)行這個(gè)命令,然后取出最好的3個(gè)結(jié)果取平均值。
試著執(zhí)行下面的命令:
In[1]: %timeit [x*x for x in range(100000)]
同樣,可以指定選項(xiàng)。
-n指定重復(fù)次數(shù),默認(rèn)100
-r是取多少個(gè)結(jié)果的平均值,默認(rèn)是3
順帶一提,%timeit測(cè)出來(lái)的結(jié)果遠(yuǎn)比真實(shí)運(yùn)行更快,原因是,timeit執(zhí)行中,會(huì)暫時(shí)關(guān)閉掉垃圾回收(gc)。
shell中使用python變量
其實(shí)這個(gè)不算是魔術(shù)方法啦,只是單獨(dú)列出來(lái)也不太合適,所以也就寫(xiě)在這里。
請(qǐng)看下面這段代碼:
folder = 'data' mkdir $folder cd %folder注意到了么,mkdir是一個(gè)魔術(shù)方法,它是%mkdir的一個(gè)鏈接,%mkdir事實(shí)上就是shell中的mkdir方法。而folder是一個(gè)python變量。但是,確實(shí),shell下的命令訪問(wèn)了python的變量,只是在變量名前面加了$。如果您熟悉shell腳本的話,這種方式應(yīng)該很親切才對(duì)。
?
%bookmark
這個(gè)方法通常用來(lái)記憶路徑,譬如說(shuō),您每次都需要cd進(jìn)一個(gè)叫做github/miko/loli/shoujo的目錄,這時(shí)候,您可以對(duì)這個(gè)路徑做一個(gè)書(shū)簽,%bookmark shoujo github/miko/loli/shoujo,這樣以后就可以直接cd shoujo這樣。
順便,如果沒(méi)有指定路徑,會(huì)默認(rèn)使用當(dāng)前路徑。
?
%alias
正如名字揭示的,這個(gè)方法用來(lái)指定別名。不過(guò),ipython的%alias還能進(jìn)行參數(shù)傳遞。
看看下面這段:
In [1]: %alias largest ls -1sSh | grep %s In [2]: largest circles很容易懂不是么?%alias后面跟的那個(gè)參數(shù)就是別名,然后可以通過(guò)%s來(lái)指定一個(gè)參數(shù),使用時(shí)傳入。
?
%store
默認(rèn)的,別名只會(huì)存在于本次會(huì)話中,如果希望下次還能使用這個(gè)別名,使用%store方法存下來(lái)吧。%store latest
另外,沒(méi)保存也不要緊,%store -r會(huì)恢復(fù)上次會(huì)話的別名。
?
%hist
ipython中history會(huì)保存所有會(huì)話中的記錄,所以隔一年什么的記錄就會(huì)相當(dāng)多啦。
雖然我知道你們都會(huì)用up,down來(lái)尋找歷史記錄……恩,試試ctrl+r,有驚喜。
另外,類似于hist 3-7什么的,好像也不用我解釋就是了。
-g選項(xiàng)和grep類似,可以查找些東西出來(lái),然后-n顯示行號(hào),-f保存歷史記錄到文件中去,-p把行號(hào)顯示為n:>>>,-n把輸入的結(jié)果顯示出來(lái)
轉(zhuǎn)載于:https://www.cnblogs.com/awakenedy/p/9259387.html
總結(jié)
以上是生活随笔為你收集整理的一起用ipython的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: yii 添加数据时 有默认值 就赋值默认
- 下一篇: python3-开发进阶-仿博客园项目s