首先,spyder4.x比较spyder3.x强大很多了,ui等各方面也好很多。这篇文章以我平时比较常用的spyder4.1.2、4.1.5为例,分享一些使用spyder4.0使用和调试过程中的一些心得。

本文分为两个部分:第一部分,介绍spyder4的强大功能。第二部分,介绍spyder4的调试功能。

熟悉使用spyder写代码和运行程序的朋友可以直接跳过第一部分,直接看第二部分。

PS: 大模型基础和进阶付费课程(自己讲的):《AIGC大模型理论与工业落地实战》-CSDN学院 或者《AIGC大模型理论与工业落地实战》-网易云课堂

第一部分,spyder4的强大功能

工欲善其事必先利其器。

这也是为什么更喜欢用spyder的原因,不能否认pycharm有更强大的跳转和调试功能,另外字体也和布局也太丰富了吧。文末我会分享图中spyder的字体,找了好多年了,也就这个字体好看一些。

本文无意贬低哪个ide,只是对比两个编辑器功能,分享一下使用它们的心得。

1.随心所欲运行代码块。

意思是,在spyder里,随便写一行或者多行代码,就可以直接输出结果,不需要像在pycharm里先写好,然后右键空白,然后跑整个py文件。当然pycharm也有插件支持这个功能,目前我也不太清楚。

比如这张图里。在spyder中写好的程序:
在这里插入图片描述
把鼠标放在当前行import nump as np,直接F9,就可以运行好,或者导包或者赋值,然后跳到下一行,一直F9, 就可以一直运行下去。

当然,也可以鼠标全部选定这几行,按一下F9搞定。重点是,不论是变量,还是函数,还是类。 都可以选定好,然后一键运行。如下图所示:
在这里插入图片描述
定义好的所有变量和函数等等会在右上角中展示出来,有变量名称,类型,size和值。比较常用的是中间这个黑白的橡皮擦,点击一下变量全部消失,非常好用…当然,清除变量的工作只是我们不能在页面上看到它了,在右下角在此打印变量也会没有,但是还是占用内存的。这里需要稍微注意一下。
在这里插入图片描述

2. 强大的变量可视化能力

正如我们在上面这张图里看到的,当我们点开numpy数组d,可以直接查看变量的样子。我也不需要print,不需要想象,我只想定义好了,让它躺在那里,然后静静的看着它。。。这点在pandas和numpy查看结构化数据非常好用,变量长度很多的时候也可以左右和上下拖动。吐槽一句,pycharm也是有的,定义的变量有个view按钮,打开以后,嗯。。。
在这里插入图片描述

3.强大的代码打印能力

当我双击这里的定义好的变量c,直接F9的时候。
在这里插入图片描述
当我双击这里还没定义的"{1: b}“,直接F9的时候。
在这里插入图片描述
直接给我定义好了,直接打印出结果了,不用print了啊!而且”{1: b}"出现在代码的中间啊!如下图:
在这里插入图片描述
这意味着,无论你面前有多少代码,无论结构多么复杂,你都可以随意选定任意长度的内容,直接运行!

当然这一条和第一条其实差不多的。但重点是,重要的事情说三遍:

这个功能在调试的时候也可以用啊!!!
这个功能在调试的时候也可以用啊!!!
这个功能在调试的时候也可以用啊!!!

所以接下来我们也重点讲解spyder4.x的调试功能。

第二部分,spyder4.x的调试功能

博客使用spyder3调试python程序的简明教程里,有对spyder3的调试功能讲解的比较清楚了。

4.x使用起来和它的过程差不多,有些快捷键还是改了,所以我根据自己的例子,重新介绍一遍它的调试功能。

1.加断点

在这里插入图片描述
鼠标放在红点这里,单击。或者光标放到当前行的任意位置,F12即可。

2.开始调试和停止调试

菜单栏蓝色最左侧按钮,点击之后,开始调试并跑到第一个断点。

右侧的蓝色大方框,点击则停止调试。
在这里插入图片描述
在这里插入图片描述
编辑器右下角出现ipdb>,表示程序开始调试,并准备在右下角打印内容
在这里插入图片描述

3.逐行调试

直接点击第二个按钮,程序跑到当前断点的下一行,也就是运行了当前行。一直点击可以一行一行往下跑。
在这里插入图片描述
在这里插入图片描述

4.进入函数体、类中调试

在下图中,首先把断点加到运行函数或者实例化类的这一行,开始调试。
在这里插入图片描述
然后点击第三个按钮,也就是step into,
在这里插入图片描述
程序则直接跑到函数体内,这时候可以使用第二个按钮逐行运行,往下一行行调试。
在这里插入图片描述
重点来了,当我运行完c的这一行,在编辑器右上角就出了变量c。

在这里插入图片描述在这里插入图片描述

不仅如此,双击变量c,F9!右下角也打印出了c!所以可以想象,即使程序一直调试的过程中,我也可以随意双击任何变量直接打印来看!
在这里插入图片描述

5.一步完成函数体、类的调试,并返回。

比如程序进到函数体中以后,点击调试的第四个按钮,直接完成整个函数的调试,并跳到return这里。

在这里插入图片描述
在这里插入图片描述在这里插入图片描述
再次点击第四个按钮,会跳出函数,回到函数调用时的地方。当然也可以点击第二个按钮下一行,也是同样的效果。

在这里插入图片描述

6.断点跳转

第五个按钮,蓝色的双箭头,表示在多个断点之间进行跳转。
在这里插入图片描述
比如下图加了多个断点,每次点击断点跳转,则根据程序的运行顺序,从第一个断点开始,依次跳转到下一个断点。
在这里插入图片描述
最后。也吐槽一下spyder调试功能的劣势,相比于pycharm,spyder在使用调试过程中,右上角显示的变量只限于当前函数内的变量。当然,如果是复杂的多层实例化的类,右上角中也可以一层一层打开类的变量和方法来看。但pycharm更方便,可以直接一层层箭头打开实例化类的变量和方法展开来看,所以是比spyder4更加友好的。

欢迎更多的朋友留言提出有关spyder4.0的更好的建议。比如,我现在也不清楚有没有一键清除所有断点的快捷键。

代码图中字体的名称:Andale Mono;本文代码运行在ubuntu16.04下的spyder中。

最后,也推广一波自己的公众号:“NLP小讲堂”。公众号会持续更新NLP相关的前沿内容,喜欢的朋友可以关注一下。

在这里插入图片描述

Logo

开放原子开发者工作坊旨在鼓励更多人参与开源活动,与志同道合的开发者们相互交流开发经验、分享开发心得、获取前沿技术趋势。工作坊有多种形式的开发者活动,如meetup、训练营等,主打技术交流,干货满满,真诚地邀请各位开发者共同参与!

更多推荐