spyder for python除錯功能
阿新 • • 發佈:2018-12-18
前言
很多人開始寫程式碼不會考慮到用Debug,就像新手不會用git管理專案一樣
但是當你開始接觸、使用這些功能之後,你會發現以前走的很多錯路都可以避免,但是該趟的坑還是需要躺的
接下來我簡要介紹一下
Spyder
編輯器下進行python程式碼除錯
Debug的優點
- 第一首先就是
找bug
了 - 快速弄清
新程式碼
、新模組
這個不難理解,假如你在一個github克隆了一個程式碼,並且成功的在你的機器上跑起來了,而你對其所用的模組一無所知,要想弄清這個黑盒子裡面的奧祕,最快的方法就是Debug。(或許很多人會選擇單元測試(不懂的都用一個print(object) ))
-
程式碼管理
下的必需方法 看下面一段程式碼,嘗試思考一個問題:怎麼知道xxx函式發生了什麼(裡面是怎麼變化的)
def xxx(s):
stack = []
paren_map = {')':'(',']':'[','}':'{'}
for c in s:
if c not in paren_map:
stack.append(c)
elif not stack or paren_map[c] != stack.pop():
return False
return not stack
if __name__ == '__main__':
xxx("([{}]){}")
很多人會選擇在迴圈內列印stack或者paren_map 你後來會發現這樣做會有很多問題
- 假如xxx函式不是你能直接接觸的,而是一個
庫裡的函式
- 就算xxx函式就是個人寫的,如果這函式是在
另一個檔案
,而主檔案只是匯入、呼叫,那你還是得去找到原檔案才能修改輸出 - 再推一步,假如函式就在這個當前檔案,
變數很多
的情況,你要去監控哪一個變數,還是有20個變數你每個都print一次 - 再有一點,很多人可能初學比較喜歡把程式碼寫在一堆,連函式入口都省了,根本沒有出現過我說的上面情況,那這我也沒辦法了。推薦一本《Clean Code》,閱讀很困難,學會很受益。
總而言之,是時候"丟棄"print了
正文
Spyder不介紹了,安裝anaconda自帶的編輯器。
首先你要開啟變數檢視 頂部選項欄View–>panes–>勾上variable explorer 效果:
接下來就是快捷鍵了,頂部也有按鈕,我更習慣用快捷鍵(即使不記得)
功能 | 快捷鍵 | 解釋 |
---|---|---|
以除錯方法執行程式 | Ctrl + F5 | 執行程式 |
下一條命令 | Ctrl + F10 | 按行執行,有一個bug就是一行程式碼分多行寫不能智慧識別為一行 |
執行到下一個斷點 | Ctrl + F12 | 斷點就是…,總之你點選上面圖那個紅色點就算斷點了,點選一下你就會操作了 |
步進 | Ctrl + F11 | 如今到呼叫的函式內部,同時內部的變數值可見 |
步出 | Ctrl + Shift + F11 | 跳出之前進入的那個函式 |
結束程式 | Ctrl + Shift + F12 | 安全中斷執行 |
簡單演示一下,在30行處打上斷點,執行到那句時步入xxx函式,
可以看到函式內部的變數值c、stack都可見了,這很有用。
當然,一切都沒有我說的那麼簡單,debug開始還是很難控制的,只有多嘗試才能熟練運用。祝你好運!