調試 Python 代碼過程中經常用到的工具
上一節我們學習了在 PyCharm 里調試 Python 程序要用到的一些基本功能,本節將介紹一些在調試過程中可能要用到的工具。包括 Watches pane、evaluate expression 以及 debug console。
1. 使用監視面板(Watches pane?)
如果要計算多個變量或表達式,并同時查看所有變量或表達式,可以為它們創建監視。表達式的值會隨著應用程序的每個步驟進行更新,但僅在應用程序掛起時才可見。
我們先創建一個新的 Python 文件 sort.py
,然后添加下面冒泡排序的代碼,然后通過監視面板查看變量與列表的變化。
def bubble_sort(arr):
n = len(arr)
# 遍歷所有數組元素
for i in range(n):
# Last i elements are already in place
for j in range(0, n - i - 1):
if arr[j] > arr[j + 1]:
arr[j], arr[j + 1] = arr[j + 1], arr[j]
arr = [64, 34, 25, 12, 22, 11, 90]
bubble_sort(arr)
默認情況下,“Watches pane"處于隱藏狀態,顯示在"Variable” 中。debug 上面程序, 顯示 Debug 工具窗口后, 點擊"show watches"切換按鈕, 面板就會顯示在右側。
PyCharm 提供了多種添加監視的方法
- 在 Watches Pane 中,單擊 + 按鈕;
- 在 Variables 中選擇一個或多個項目,并將其拖動到 Watches Pane;
- 右鍵單擊編輯器中的項目,然后選擇"Add to Watches";
- 在 Variables 中, 右鍵單擊所需項目并選擇"Add to Watches"。
Tips: 通過工具欄中的 - 按鈕, 可以隨時移除所填加的監視。
另外, PyCharm 提供了單獨的窗口檢查(inspect)變量與監視,例如,需要檢查多個引用,可以為中每個引用打開一個檢查窗口。 在 Debug 工具窗口的 Variable 或 Watches 窗口選擇要 Inspect 的項目, 右鍵從上下文菜單中,選擇 inspect。
2. 計算表達式(Evaluating Expressions)
使用 PyCharm,不僅可以查看獨立變量的值,還可以計算更復雜的表達式,如方法調用、運算符表達式、lambda 表達式類。
1. 計算表達式的最簡單方法是使用編輯器工具提示。主菜單 PyCharm/File -> Preference/Settings -> Build, Execution, Deployment -> Debugger -> Data Views
:
鼠標懸停在變量處,就可以顯示對應的值:
如果變量或表達式的值包含子元素,單擊 +
按鈕將展開節點并顯示所有子元素:
2. 使用專用的對話框計算評估表達式。
Evaluate 對話框允許在當前上下文中使用變量和表達式 - 可以對它們執行各種操作和調用方法,然后使用其當前值獲得的結果。
以下面為例, 在 Evaluate 對話框 里輸入一個新的表達式,然后變量的當前值被代入表達式,點擊 Evaluate 按鈕或者回車 , 表達式結果返回。
Tips: 可以將焦點切換回編輯器以復制其他變量和表達式,如有必要,還可以打開多個 Evaluate 對話框。
PyCharm 也提供了多種方式打開 Evaluate 對話框
- 按?F8 (Alt + F8);
- 從上下文菜單中選擇Evaluate Expression…;
- 從主菜單中選擇
Run -> Debug Actions -> Evaluate Expression...
; - 單擊 Debug 窗口工具欄上的 Evaluate Expression… 按鈕。
Tips: 如果選擇了某項內容,則變量或表達式將顯示在"表達式"字段中。否則,在字段中鍵入表達式,或從列表中選擇以前計算的表達式之一。
3. 使用調試控制臺(debug console)
調試控制臺使能夠查看輸出和錯誤消息。啟動調試會話時,PyCharm 將啟動調試控制臺。控制臺是交互式的:可以在其中鍵入命令、執行命令和查看結果。
Tips: 在控制臺中可以直接調用程序中定義的變量與方法執行各種操作,幫助做更多的調試。
4. 小結
本節介紹了幾個調試中可能用到了工具,因為上面例子都比較簡單,只為了說明具體功能,大家可能不能深入體會到這些功能好處。其實這些工具在比較復雜項目中調試中還是比較常用的,因為在項目中定義了很多變量與方法,有些方法或者變量又被引用了多次,這時把關注的對象放在Watches Pane 里隨時監控與檢查,通過設置,在編輯器內隨時查看表達式或者變量的值,這對于調試程序都是非常有幫助的,大家可以在以后工作學習實踐中逐漸體會理解。