醞釀了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以上版本。
原文地址:https://mp.weixin.qq.com/s/oqCCe49JHNEgXZKoPWLsYA