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

来源:https://www.cnblogs.com/python0921/archive/2020/04/24/12769942.html
-Advertisement-
Play Games

Python 代碼編輯器怎麼選?PyCharm、VS Code、Jupyter Notebook 都各有特色,Jupyter 適合做數據分析這些需要可視化的操作,PyCharm 更適合做完整的 Python 項目。然而,因為互動式操作,很少會有開發者想到用 Jupyter 做 Debug。 儘管很多 ...


 

 

 

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教程。獲取方式,私信小編 “ 資料 ”,即可免費獲取哦!


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 最近總是做到有關博弈之類的題目,突然想認真的瞭解一下,現在將我的瞭解總結如下,希望對看到的人有所幫助。同時也請多多支持哈~~ 巴什博弈是眾多博弈種類中眾多的一種,同時也是最簡單的一種。它的基本模型是只有一堆物品,數量為n,兩個人輪流從這堆物品中拿走x(1<=x<=m)個,拿走最後一個的人獲勝。 這裡 ...
  • 1. Web基本概念 1. 1軟體架構 C/S:客戶端/服務端 B/S:瀏覽器/服務端 1. 2資源分類 靜態資源:所有用戶訪問的結果都是一樣的,稱為靜態資源,靜態資源可以被瀏覽器直接解析 如:html,css,JavaScript 動態資源:每個用戶訪問相同資源後,得到的結果可能不一樣,稱為動態資 ...
  • 1 簡介 之前講過如何通過 安裝 ,也講了 以`Repository Redis`,建議閱讀後再看本文效果更佳: (1) "Docker安裝Redis並介紹漂亮的可視化客戶端進行操作" (2) "實例講解Springboot以Repository方式整合Redis" 本文將通過實例講解 以`Temp ...
  • 一:軟體出現的目的 1:用電腦的語言描述現實世界 2:用電腦解決現實世界的問題 編程思維: 使用面向對象的思想(描述)面向對象的世界 (符合人類的思維習慣) 二:面向對象設計和開發程式的好處 1:符合人類的思維習慣 2:交流更加流暢 2:可維護性高(方便修改代碼) 3: 提高設計和開發效率 三: ...
  • 一:構造方法的概念: 構造方法是一種特殊的方法,它是一個與類同名的方法。對象的創建就是通過構造方法來完成,其功能主要是完成對象的初始化。當類實例化一個對象時會自動調用構造方法。構造方法和其他方法一樣也可以重載。 二:構造方法的特殊性(反映在以下幾個方面): 1.構造方法作用: (1)構造出來一個類的 ...
  • 案例故事: Android車載測試過程中,客戶反饋低概率偶現高德地圖App啟動過程中, 出現了報錯:“高德地圖無法繼續運行”,客戶說只碰到過一次,後續再沒復現過, 測試經理安排我們負責壓測,反覆進行高德地圖打開關閉, 併在打開過程中,截一張圖,打開載入完畢後再截取一張圖, 測試經理希望自動化實現截取 ...
  • 基本if選擇結構 語法: if(條件){ ​ //條件為真執行 }條件為假執行大括弧外 案列: 1 if(javaScore>98){ 2 System.out.println("獎勵硬碟"); 3 } if-else選擇結構 語法: if(條件){ ​ //代碼塊1 }else{ ​ //代碼塊2 ...
  • 【準備環境】 python pycharm mysql 參考 https://www.cnblogs.com/xinhua19/p/12750611.html redis 參考https://www.cnblogs.com/xinhua19/p/12750659.html 【步驟】 1.打開pych ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...