1. 程式人生 > 資訊 >互動式 shell IPython 8.0 大版本更新:Debug 報錯提示更清晰,加入自動程式碼補全

互動式 shell IPython 8.0 大版本更新:Debug 報錯提示更清晰,加入自動程式碼補全

IPython(interactivepython)是一個用於多種程式語言互動計算的命令 shell,最初是為 Python 程式語言開發的,它提供了內省、富媒體、shell 語法、製表符完成和歷史記錄。

醞釀了 3 年多,IPython 8.0 終於來了。現在,用上最新版本,你不僅能在命令列裡使用 Black 重新格式化程式碼,還能獲得更好的自動程式碼補全和 Debug 體驗。

更多詳情,咱們接著往下看。

優化報錯

在 8.0 版本之前,如果程式碼出錯,IPython 的錯誤回溯會顯示一個雜湊值,用於編譯 Python AST,就像這樣:

而現在,錯誤回溯已經正確格式化,能夠顯示出 bug 所在的具體單元格編號。

另外,IPython 8.0 還集成了 stack_data,這個包提供了更智慧的追蹤資訊,能夠突出顯示發生錯誤的 AST 節點,幫助快速定位 bug。

比如對於這樣一段程式碼:

呼叫 bar (),就能獲得一個 IndexError,IPython 8.0 會告訴你索引錯誤具體發生在哪裡。

注:在終端和 notebook 中,用 ^ 標記的位置將顯示為高亮。

還有一個對生產力有較大影響的改進,就是在錯誤回溯的檔名後面新增冒號和行號。

許多終端和編輯器都允許在使用這種語法時,直接跳轉到相關檔案 / 行。

自動程式碼補全建議

除了更好的 Debug 體驗,如果你很喜歡 Ptpython 裡的程式碼自動補全功能,那麼現在在 IPython 8.0 裡你也能用上了。

通過 ctrl-f,或 ctrl-e,或按下右箭頭,就可以接受這些建議。

alt-f 快捷鍵則可以只接受建議的第一個單詞。目前,自動建議只能在 emacs 或 vi 模式中顯示。

使用“?”和”??”檢視物件資訊

在 IPDB 中,現在可以用“?”和“??”來顯示物件資訊,在使用 IPython 提示符時也一樣:

在 CLI 中用 black 自動格式化

如果 black 被安裝在與 IPython 相同的環境中,那麼現在,終端 IPython 將在預設情況下儘可能重新格式化命令列(CLI)中的程式碼。當然,你也可以用 —TerminalInteractiveShell.autoformatter=None 來禁用該選項。

歷史範圍全域性功能

此前,在使用 % history 時,使用者可以指定 session 和行:

或是使用全域性模式:

但在 8.0 以前,這兩種模式不能兼得。如果使用者同時指定了 2 種模式,IPython 將應用全域性模式(對所有歷史記錄進行全域性化)並忽略指定範圍。

現在,此功能得到加強,如果使用者同時指定了範圍和 glob 模式,則 glob 模式將應用於指定的歷史範圍。

如果你還想了解更多資訊,官網連結在此奉上:

https://ipython.readthedocs.io/en/stable/whatsnew/version8.html#ipython-8-0

對了,還要提醒一點,如果想用 IPython 8.0,你得先把 Python 升級到 3.8 以上版本。