不一定非得使用Jupyter Notebook,試試ipython命令列
安裝 ipython
我只試過Windows 10環境下的。
1.安裝python安裝包之後,應該就有ipython了。
2.安裝anaconda,這個做機器學習或資料分析要是需要的,這個裝完之後,也會有ipython。(建議使用anaconda,國內映象地址:https://mirrors.tuna.tsinghua.edu.cn/)
啟動ipython
1.命令列輸入ipython即可啟動。
2.或者找一下快捷方式,也可以啟動。
幫助?
1.help,python內建了help方法,相信大家都會這個。例如:help(len),然後就會顯示len方法的幫助文件:
2.?,ipython獨有的提供了一個快捷字元?,它也可以訪問幫助文件,例如:
檢視原始碼??
使用?? 來檢視python的原始碼:
但是,如果原始碼不適用python寫的(有些內建的方法使用C等語言寫的),就會出現如下效果:
自動完成 Tab
Tab鍵在ipython中輸入時可提供自動完成或瀏覽功能。
有時候優點像python內建的dir()函式,但強大得多。
這是L.後邊點選Tab的效果。下面是再輸入一個字母c之後的智慧提示的效果:
提示私有屬性
使用Tab預設只顯示public和external屬性/方法,如果想顯示私有屬性,那麼按約定,你要先輸入一個下劃線_。
import的時候也可以使用Tab
萬用字元*
有時候tab不夠用,那就使用萬用字元 * 。
例如:顯示以Error結尾的物件:
注意後邊還有個?。
*可以匹配任何字串包括空字串。
另一個例子,包含xxx字串:
快捷鍵
導航類:
Ctrl+a,移動游標到行首
Ctrl+e,移動游標到行尾
Ctrl+b(或←),向左移動一個字元
Ctrl+f(或→),向右移動一個字元
輸入類:
Backspace:刪除行中前一個字元
Ctrl+d,刪除行中下一個字元
Ctrl+k,從游標位置剪下到行尾。
Ctrl+u,從行首剪下到游標位置。
Ctrl+y,貼上之前剪下的文字。
Ctrl+t,調換前兩個字元的位置。
命令歷史類:
Ctrl+p,前一個命令,和↑好像一樣。
Ctrl+n,後一個命令,和↓好像一樣。
Ctrl+r,倒序搜尋。
其中Ctrl+r是挺有用的,例如:
按Ctrl+r後,輸入a,就會倒序搜尋之前的輸入。
如果有相同的歷史搜尋結果的話,你可以點選多次Ctrl+r繼續往前翻。
其它快捷鍵:
Ctrl+l,清屏
Ctrl+c,中斷當前python命令
Ctrl+d,退出ipython
魔法命令
複製多行程式碼 %paste,%cpaste。
在ipython命令列中使用Ctrl+c複製多行程式碼經常會出現問題(縮排等問題),使用%paste命令,解決了這個問題。
輸入%paste,然後回車,就會把你剪下盤裡面的內容完美的複製進來並執行。
%cpaste,和%paste類似,但是它會提供一個互動介面,以便輸入多個程式碼塊。
執行外部程式碼 %run
直接舉例:
為程式碼執行計時:%timeit,%%timeit
對單行程式碼的執行計時:%timeit:
對多行程式碼執行計時:%%timeit:
魔法命令的幫助文件:
使用%maigc,可以檢視所有魔法命令及其文件。
使用%lsmagic,可以列出所有的魔法命令。
輸入輸出歷史
使用ipython shell,您一定對左邊這些in,out特別熟悉。
但是,它們不是裝飾品,它們倆是變數。
In和Out是兩個變數,並且隨著命令的輸入,實時更新。
其中:
In是一個list,而Out是一個Dictionary。
所以可以這樣檢視具體的In和Out:
其中需要注意的是,並不是所有的In都有輸出,例如[37]。
下劃線和前一個輸出
使用一個下劃線 _ 來獲取前一個輸出結果,它是個變數,實時更新的。
使用兩個下劃線 __ 可以獲取倒數第二個輸出,使用三個下劃線 ___ 獲取倒數第三個輸出。(沒有輸出的命令列不計入在內)
最多也只能使用三個下劃線,超過三的話可以使用Out[X]或者_X來獲取之前的輸出:其中X是命令列號,不是往前數的個數。
抑制輸出
有時候在輸入命令後,我們不想讓其輸出結果,那就這樣,在行的最後邊加一個 ; 分號。
這樣的話,第76行也就沒有輸出了,Out[76]就不存在了。
相關的魔法命令:%history
使用%history可以一起獲取前面多個命令:
注意其引數-n後邊跟的是 命令列號的區間。
Shell Commands和IPython互動
你可以在ipython中使用任何shell commands(暫時叫系統命令列的命令吧),只要在前邊加一個歎號 ! 。
(其實,對於常見的shell命令,直接輸入就會好用。。因為automagic屬性預設是on的,詳見後邊)
從Shell向ipython傳值
直接寫個賦值表示式就可以,等號的右邊是Shell命令:
注意:傳進來的值的型別不是list,而是:IPython.utils.text.SList。
從ipython向Shell傳值:
使用{變數名}的形式賦值:
注意:不可以使用 !cd 這個檔案系統導航命令。
Shell相關的魔法命令
如果想要在ipython中進行系統導航,那麼應該使用%cd這個魔法命令。
automagic
如果把automagic屬性設定為on,那麼魔法命令前邊就不需要%這個符號了。
預設automagic是on的,你可以輸入automagic,那麼它就會在on/off之間切換。
因為魔法命令包含了很多常見的shell命令,例如%cd,%pwd,%ls等等等等。所以預設情況下直接輸入常見的shell命令就會好用。
Exception顯示的詳細程度
如果直譯器擊中異常的時候,可以在traceback中檢視異常資訊。
使用%xmode可以控制異常資訊的詳細程度:
%xmode 只有一個引數,後選項從簡到繁是 Plain,Context,Verbose。我的電腦預設是Verbose。
Debugging
%xdebug 魔法命令。
在發生異常後,輸入%xdebug,會進入debug模式ipdb。在這裡輸入變數可以檢視變數的值,也可以執行python命令!
如果你想在發生任何異常的時候就進入debug模式,那麼可以把pdb設定為on:
此外,如果你想在執行外部指令碼的時候直接進入debug模式,那麼就應該輸入這個命令:
%run -d。
部分Debug命令(ipdb模式下):
l(ist),顯示在檔案中的當前位置。
h(elp),幫助
q(uit),退出Debugger和程式。
c(ontinue),退出Debugger,繼續執行程式。
n(ext),執行程式的下一步
<enter>,重複上一個命令
p(rint),列印變數
s(tep),進入子程式
r(eturn),從子程式跳出
分析(Profiling)和計時模式
%time,適用於對單個長時間執行的表示式的程式計時。
%timeit,適用於對迴圈類的單行程式計時,它更準確。
注意:%timeit的結果通常比%time更快。
%prun,使用分析器執行程式碼
此外,還可以安裝第三方分析工具,例如%lprun(逐行分析),%memit(單個表示式記憶體分析),%mprun(逐行記憶體分析)等等。
下一篇文章,寫一下Numpy的使用技巧