第一章 IPython
第一章 IPython
- 當有人找你幫忙解決問題時,大多數時候,重要的不是知道答案,而是知道如何找到答案。
- Ipython可以通過符號?用於瀏覽對象、函數等的文檔,符號??瀏覽源代碼,Tab鍵用於自動補全。、
- 常用的魔法命令
- 粘貼代碼塊%paste %cpaste
- 當從外部粘貼代碼到解釋器時,常常會出現不可預料的錯誤,這時可以用%paste魔法函數解決包含符號的多行輸入問題
- 也可以使用%cpaste,該命令打開一個交互式多行輸入提示,可以在這個提示下粘貼並且執行一個或者多個代碼塊。
- 執行外部代碼 %run
- 在ipython會話中運行之前的代碼可以使用%run魔法命令
- 比如之前有一個scrip.py文件,可以在ipython中使用
- %run scrip.py
- 來運行該文件,之後該文件中的所有函數都可以直接在ipython使用。
- 比如之前有一個scrip.py文件,可以在ipython中使用
- 在ipython會話中運行之前的代碼可以使用%run魔法命令
- 計算代碼運行時間 %timeit
- %timeit可以自動計算接下來一行的python語句的執行時間
- %timeit python語句
- 對於多行語句,可以使用%%timeit來處理多行輸入。
- %timeit可以自動計算接下來一行的python語句的執行時間
- 獲得可用魔法函數的通用描述以及一些示例:%magic
- 獲得所有可用魔法函數的列表:%lsmagic
- 粘貼代碼塊%paste %cpaste
- IPython輸入和輸出
- IPython中有In[1]:/Out[1]這樣的提示,該提示其實是In和Out的Python變量。
- In對象是一個列表,按照順序記錄所有的命令。
- Out對象是一個字典,它將輸入數字映射到相應的輸出。
- 如果希望使用以前計算的結果,可以使用類似Out[2]**2 + out[3]**2這樣的方式來調用以前的結果
- 禁止輸出
- 當執行命令時,不希望該命令進行輸出,則可以在該命令後添加分號;,該輸出結果就不會顯示在屏幕上,也不會存儲在out路徑下。
- 一次性獲取此前所有的輸入歷史:%history
- 參數 -n 1-4 :輸出倒數1-4條
- 重新執行部分歷史命令:%rerun
- 將部分歷史命令保存到一個文件中:%save
- IPython和shell命令
- 在IPython終端可以直接執行shell命令的語法,一行中任何在!之後的內容將不會通過Python內核運行,而是通過系統命令行運行。
- 但不能直接通過!cd來導航文件系統,原因是notebook中的shell命令時在一個臨時的分支shell中執行的,如果希望用一種更持久的方式更改工作路徑,需要使用%cd魔法命令:
- %cd myproject
- 這種方式被稱作自動魔法函數,可以通過%automagic魔法函數進行翻轉
- 其它可用的類似shell的魔法函數還有%cat %cp %env %ls %man %mkdir %more %mv %pwd %rm %rmdir
- 如果automatic被打開,以上任何一個魔法命令都可以省略%符號,這樣就可以把IPython提示符當作普通shell一樣使用
- 但不能直接通過!cd來導航文件系統,原因是notebook中的shell命令時在一個臨時的分支shell中執行的,如果希望用一種更持久的方式更改工作路徑,需要使用%cd魔法命令:
- 在IPython終端可以直接執行shell命令的語法,一行中任何在!之後的內容將不會通過Python內核運行,而是通過系統命令行運行。
- 代碼分析與計時
- %time:對單個語句的執行時間進行計時
- %timeit:對單個語句的重複執行進行計時,以獲得更高的準確度
- %prun:利用分析器運行代碼
- %lprun:利用逐行分析器運行代碼 需要安裝line_profiler包
- %memit:測量單個語句的內存使用 需要安裝memory_profilter包
- %mprun:通過逐行的內存分析器運行代碼 需要安裝memory_profilter包