PyCharm入門第一步(二):除錯第一個Python應用程式

AABBbaby發表於2018-08-28

PyCharm最新版本下載

第2步:除錯您的第一個Python應用程式

找出問題的根源

PyCharm報告執行時錯誤:a ZeroDivisionError。深入研究一下程式碼,找出問題所在。這裡可以使用PyCharm偵錯程式來檢視程式碼中發生了什麼。要開始除錯,您必須先設定一些斷點。要建立斷點,只需單擊左側gutter:

接下來,單擊左側gutter中的播放圖示,在main旁邊,然後選擇Debug 'Car'。 PyCharm啟動除錯會話並顯示除錯工具視窗。

在Console選項中,輸入S:

如您所見,斷點標記變為藍色。這意味著已經達到了斷點; 請注意,此時尚未執行突出顯示的程式碼行。

單擊播放圖示以恢復指令碼執行。現在另一個斷點也出現了:預設情況下,PyCharm將停止程式碼中未捕獲的任何異常,並且它將顯示帶閃電的斷點圖示。

控制檯還會顯示錯誤訊息。您還可以在偵錯程式中看到該值self.time等於零:

Surrounding code

為避免再次遇到同樣的問題,現在新增一個if語句來檢查時間是否等於零。為此,在方法average_speed中選擇語句return self.odometer / self.time,然後按Ctrl + Alt + T(Code | Surround with):

PyCharm建立一個stub if構造,讓你完成填充正確內容的任務。編輯後,得到以下內容:

詳細除錯

“除錯”工具視窗顯示框架, 變數和監視的專用窗格以及控制檯,其中顯示所有輸入和輸出資訊。如果希望控制檯始終可見,可以將其拖動到PyCharm視窗的一個邊緣。

Stepping

如果您希望逐行檢視程式碼的作用,則無需在每一行上設定斷點,您可以單步執行程式碼。看一下示例程式是什麼樣子:單擊播放圖示,轉到控制檯詢問汽車的平均速度(型別'S'),可以看到達到斷點。這時可以使用Stepping工具欄按鈕選擇想要在下一行停止的行。

例如,單擊Step Over 按鈕並看到藍色標記移動到下一行程式碼:

如果單擊Step Into按鈕,您將看到action = input("What should I do? [A]ccelerate, [B]rake, " "show [O]dometer, or show average [S]peed?").upper() 偵錯程式進入檔案parse.py:

但是,如果繼續使用Step Over 按鈕,您將看到您的應用程式只是傳遞到下一個迴圈:

如果您想專注於自己的程式碼,請使用Step Into My Code按鈕 - 這樣您就可以避免進入庫類。

Watching

PyCharm允許您觀察任何變數。只需要單擊Watches選項的工具欄中的+,然後輸入你想要觀看的變數的名稱-將其設定為 my_car.time。請注意,此處可以使用程式碼完成:

首先,您看到時間等於nil - 這意味著該變數尚未定義:

但是,當程式執行繼續到定義變數的作用域時,監視器將獲得以下檢視:

內聯除錯

您可能已經注意到另一個PyCharm功能,可以輕鬆檢視程式碼正在執行的操作: 內聯偵錯程式。一旦你遇到任何斷點,PyCharm就會在編輯器中向你顯示許多變數的值:

預設情況下啟用此內聯除錯功能。如果您沒有看到內聯除錯值,請使用除錯工具視窗中的設定圖示檢查它是否已啟用::

評估表示式

最後,您可以隨時評估任何表示式。

實際上,你可以用watch看到同樣的東西。使用評估表示式,您可以執行使用watch無法執行的操作:您可以更改內容。例如,如果輸入所需的里程錶值50,然後繼續單步執行指令碼,您將獲得以下資訊:

概要

  • 找出問題的根源
  • 設定斷點
  • 逐步完成您的計劃
  • 建立一個 watch
  • 評估一個表達

相關文章