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开始还是很难控制的,只有多尝试才能熟练运用。祝你好运!

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