1. 程式人生 > >Python 程式碼編輯器怎麼選?PyCharm、VS Code、Jupyter Notebook 都各有特色

Python 程式碼編輯器怎麼選?PyCharm、VS Code、Jupyter Notebook 都各有特色

 

 

 

Python 程式碼編輯器怎麼選?PyCharm、VS Code、Jupyter Notebook 都各有特色,Jupyter 適合做資料分析這些需要視覺化的操作,PyCharm 更適合做完整的 Python 專案。然而,因為互動式操作,很少會有開發者想到用 Jupyter 做 Debug。

 

 

 

儘管很多讀者可能認為 Jupyter 用來做展示和小型試驗就足夠了,Debug 並沒有太大的需求,但彌補上 Jupyter 缺失的一環,能讓它更好用,未來 Debug 也會作為預設模式。

 

為什麼 Jupyter 需要 Debug?

 

Jupyter 這種工具雖然有很好的互動效能,但其也明白,對於大型程式碼庫,最好還是用傳統的 IDE 比較靠譜。因此為了彌補這一缺陷,Jupyter 專案在過去幾年也希望通過 JupyterLab 來加強對大型程式碼庫的處理過程。

 

然而,JupyterLab 還是有一大缺陷,它不能通過視覺化的方式進行 Debug,這限制了進一步的除錯。這幾天,Jupyter 團隊表示,經過幾個月的開發,他們很高興能第一次釋出 Jupyter 視覺化 Debugger。

 

雖然這只是第一版,但目前已經可以設定常見的斷點 Debug,檢視各種變數、執行模組等資訊。

 

 

 

新工具的用法也很簡單,很常見的 Debug 方式差不多。如果讀者想要安裝這個新工具,那麼首先你需要為 JupyterLab 裝前端外掛:

 

 

至於後端 Kernel,Jupyter 團隊表示目前 kernel 需要實現 Jupyter Debug Protocol,因此暫時只能用xeus-python:

 

只要裝好前端與後端,我們就可以直接使用了。開發者還提供了 Debug 的線上體驗版,不需要安裝任何東西就能體驗。

 

線上 Debug 環境:

https://hub.gke.mybinder.org/user/jupyterlab-debugger-hwxovlw4/lab/tree/examples/index.ipynb

 

Xeus-python:第一個支援 Jupyter Debug 的核心

Xeus 是 Jupyter kernel protocol 的 C++實現,它本身並不是一個核心,而是能幫助構建核心的庫。當開發者希望構建 Python、Lua 等擁有 C、C++ API 的語言核心時,它非常有用。

目前已經有一些核心使用 xeus 進行開發,Xeus-python 核心是我們做 Python 開發時可選的一個核心,它去年就已經有釋出。Xeus-python 之所以被 Jupyter 團隊選為第一個實現 Debug 的核心,主要是它有以下兩大優勢:

  • Xeus-python 具有可插拔的併發模型,它允許在不同的執行緒中執行 Control channel 的處理過程;
  • Xeus-python 有非常輕量級的程式碼庫,因此迭代與更新都非常方便。

短期內,xeus-python 還會有進一步提升的計劃,例如新增 Ipython 魔術方法,優化 xeus-python 的 PyPI 等。

 

深入至 debugger 的前端架構

JupyterLab 的 debugger 擴充套件針對使用者對 IDE 的使用習慣提供了通常性功能:

 

  • 帶有資源管理器的側邊欄,無序列表,源預覽以及允許導航至呼叫堆疊
  • 可直接在程式碼旁(即在程式碼單元以及程式碼控制檯中)設定斷點的功能
  • 視覺化的標記,指示當前執行停止的位置

 

當使用 Jupyter 筆記本時,執行的狀態儲存在核心中。但是如果我們執行了一個 cell,然後又把整個 cell 刪了,那麼使用者在 Dubug 的時候希望執行到那些程式碼又怎麼辦?

 

如下動圖所示,該外掛支援特定用例,並能在只讀模式下檢視以前執行過的 cell。

進入已刪除的單元格

 

在 JupterLab 中除錯程式碼控制檯

 

在 JupyterLab 中除錯檔案

 

 

可以在 notebook 級別上啟用除錯,使用者可以在除錯 notebook 的同時在另一個 notebook 上工作。

同時除錯多個筆記本

 

 

可以使用樹狀檢視器和表狀檢視器檢查變數:

變數瀏覽器

 

 

 

JupyterLab 的 debugger 外掛目標是與任何支援除錯核心一併使用。通過 Debug Adapter Protocol,debugger 外掛可以抽象出針對於特定語言的功能,併為使用者提供匹配的除錯介面。

 

並且團隊計劃在 2020 年對 debugger 的體驗進行重大改進,例如在變數瀏覽器中支援豐富的渲染,在 UI 中支援條件斷點。

 

VS Code 視覺化 Debug 工具

 

Debug 是條漫漫長路,不久前機器之心也介紹過一款 VS Code 實時視覺化 debug 工具,在此也可以作為參考。以一種更優雅、更簡潔的 debug 方式幫使用者找到程式碼問題所在是未來優化的方向之一,而之前所介紹這款視覺化 debug 能夠快速展示資料結構。

 

從效果層面上看此款工具更加驚豔,而且跟以往傳統 debug 方式的展示形式完全不同,比如將斷點設定為第 32 行定義雙向連結串列,隨後一行行執行程式碼就會在右圖展現出對應的資料結構圖。

 

 

 

同時也會根據資料結構以不同的方式展現,例如樹形、表格、曲線和圖等。

 

 

 

同時還內建了其他可自定義的視覺化調節器,可以根據面對不同的處理物件,可選擇更易於理解的視覺化方式。比如圖表視覺化,Plotly 視覺化,Tree 視覺化,網格視覺化,文字視覺化等等。

Plotly 視覺化

 

AST 視覺化

 

 

 

不過這款 VS Code 的 debug 工具開發者正在探討其對 Python 的支援,而對於 Python 的完美支援會使得該專案更加便捷且適用。

 

而對於 debug 來說,不管最終是採用的是 print()大法,或是善用 assert 語句,亦或是以直接設定斷點,包括各種新推出的 debug 工具。單從輔助工具角度層面看,只要它能夠提高工作效率,不管是哪款 debug 工具,找到適合你的那便是值得一試。

如果你處於想學Python或者正在學習Python,Python的教程不少了吧,但是是最新的嗎?說不定你學了可能是兩年前人家就學過的內容,在這小編分享一波2020最新的Python教程。獲取方式,私信小編 “ 資料 ”,即可免費獲取哦!