spyder for python調試功能

前言

很多人開始寫代碼不會考慮到用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開始還是很難控制的,只有多嘗試才能熟練運用。祝你好運!

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章