日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程语言 > python >内容正文

python

一起用ipython

發(fā)布時(shí)間:2024/1/17 python 27 豆豆
生活随笔 收集整理的這篇文章主要介紹了 一起用ipython 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

安裝

安裝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)快捷鍵

在此粘貼給大家作為備忘。

  • Ctrl-P? ? 或上箭頭鍵 后向搜索命令歷史中以當(dāng)前輸入的文本開(kāi)頭的命令
  • Ctrl-N? ?或下箭頭鍵 前向搜索命令歷史中以當(dāng)前輸入的文本開(kāi)頭的命令
  • Ctrl-R? ?按行讀取的反向歷史搜索(部分匹配)
  • Ctrl-Shift-v? ?從剪貼板粘貼文本
  • Ctrl-C? ?中止當(dāng)前正在執(zhí)行的代碼
  • Ctrl-A? ?將光標(biāo)移動(dòng)到行首
  • Ctrl-E? ?將光標(biāo)移動(dòng)到行尾
  • Ctrl-K? ?刪除從光標(biāo)開(kāi)始至行尾的文本
  • Ctrl-U? ?清除當(dāng)前行的所有文本譯注12
  • Ctrl-F? ?將光標(biāo)向前移動(dòng)一個(gè)字符
  • Ctrl-b? ?將光標(biāo)向后移動(dòng)一個(gè)字符
  • Ctrl-L? ?清屏
  • 魔術(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)題。

    如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。