最近和同学讨论到spyder的使用技巧,所以就结合之前在网上看到网友的总结( https://blog.csdn.net/peiwang245/article/details/78528098)和自己的使用经历做一下总结,以便自己日后和需要的朋友参考。

快速锁定相同的代码:

把鼠标放到想要锁定字体的前面或者字体中间即可,电脑性能好的话反应很快,慢的话要2-3秒。

调试

先写一个简单的小程序用于调试:

​​

1.我们暂时先不打断点,用debug的方式运行该代码试试

点击spyder工具栏上的Debug按钮,或者使用快捷键Ctrl+F5开始调试。

​​

在ipython界面会输出如图所示的内容:

​​
出现了ipdb提示符,说明我们已经进入了调试模式,上面输出的内容可以看出是代码的第一行,接着在提示符中输入c(continue的缩写,表示程序继续向下执行到下一个断点),会输出如下内容:

​​
程序执行结束,可见即使我们没有打断点,仍然会在第一句执行之前中断(经测试,中断的时候第一句还没有执行),这个和我用过的其他编译器不太一样(比如eclipse和IntelliJ,在不打断点的情况下会正常执行到底)。

如果你仔细看刚才的工具栏截图的话,会发现在debug按钮组的第五个按钮和刚刚的’c’命令是一样的功能,但是不知道为什么,在我这个版本的spyder里有这个按钮一些bug(具体来说就是在程序执行结束之后不会自动退出pdb,而且之后再想使用’q’命令退出也退出不了,换而言之,就是卡死在了pdb里面),如果你使用的是更高版本的spyder的话,这个bug可能已经修复了,可以尝试一下.

打断点的两种方法:

1.普通的breakpoint

用spyder打断点的方法非常简单,只要在想打断点的那一行行首(若显示行号,则在行号前)双击鼠标即可,如图所示,我们尝试建立一个断点:
​​
在每次开始debug之前,先在spyder的ipython界面中输入%reset 把工作空间的所有变量清除,以免影响到我们接下来的测试.
按下Ctrl+F5开始debug,进行如图所示的操作:

​​         ​​​
然后我们就到达了断点处,从箭头(–>)以及''D:/spyder_code/practicecode/spyder常用功能.py''中的数字9可以看出程序刚刚执行到了第9行(也就是我们打断点的这一行),第9行到底有没有执行呢?只要测试一下f变量是否存在就可以了,尝试在ipdb中进行如下输入:

​​      ​​​
!(python语句)的意思就是在当前状态下执行该python语句,我刚刚的用法的意思显然是查看变量内容,从!f 的错误信息可以看出f尚未定义,即第9行代码(f='f')还没有执行,查看e变量发现e变量已经被定义了,这说明第8行已经执行结束了。通过以上实验可以看出,spyder会在断点语句的执行之前中断。

2.带条件的breakpoint

双击刚刚在第9行代码开头创建的“小红点”即可取消断点
取消断点后,按住Ctrl+Shift,然后像刚才一样双击第9行行首,会弹出一个小框:

​​
在这个小框内可以输入断点的条件,可以是任意返回True或False的python语句,比如输入:  (a==4)and(b==5)

​​

然后点击OK按钮,发现小红点上多了一个问号,这个表示条件断点(conditional breakpoint),开始debug试一下:点击debug按钮,如上所述,会在第一行语句执行之前中断一次。然后在提示符中输入c(continue的缩写,表示程序继续向下执行到下一个断点),发现程序只在第一句中断一下,断点没有起作用,因为在断点的时候,a变量为’a’,b变量为’b’,不符合条件当然不会中断.

​​

​​

现在重新开始debug,然后连续按三遍Ctrl+F10,然后发现程序执行到了第7行:
​​
其实Ctrl+F10是单行执行的意思,每按一次执行一行,相当于点击了工具栏上如下图所示的按钮:

​​
这个时候我可以使用刚刚讲过的!(python语句)来给a,b临时指定一个值,在ipdb的提示符中输入!a=4;b=5 ,然后使用c命令继续执行,发现在条件断点处中断了,因为此时满足了我们刚刚给条件断点指定的条件:

​​
如果忘了条件断点的条件是什么的话,可按住Ctrl+Shift键双击“带问号的小红点”,然后就能看见条件是什么了,而且还可以修改条件,如果要取消断点的话,直接双击就可以了。

总结一下刚刚所讲的

Ctrl+F5 以Debug模式运行文件
在debug之前记得用%reset 指令清空一下ipython工作空间中的变量,以免影响debug中变量值的查看
无论你是否打断点,都会在第一行语句执行之前中断一次
!(python语句)可以在pdb提示符下执行python语句,可以用来查看变量值或者给变量临时指定值
c命令或者Ctrl+F12可以让程序执行到下一个断点
q命令退出调试
Ctrl+F10 单行执行
双击行首设置断点,按住Ctrl+Shift 双击行首可以设置条件断点

上面的例子已经包括了大多数常用的功能,我下面要讲的两个功能只要看到按钮的名称就大概知道它是做什么的了. 如下:
Step Into

上面一张图的按钮的功能我们称之为Step Into(下面一张图的按钮的功能我们称之为return),用于进入一个函数体内部,为了更清楚的说明它的功能,我们给出一个例子,在spyder中创建如下程序:

# -*- coding: utf-8 -*-
"""
@author: zhu_Lydia
"""
def myTest():
c = 'a'
d = 'b'
e = 'c'
return c

a = 'a'
b = 'b'
c = myTest()
f = 'f'
print(a)
在spyder的ipython界面中输入%reset,然后开始debug,不断地按Ctrl+F10 单行执行这个程序,当运行到c = myTest() 这句时注意一下:

​​

不管myTest()中有多少代码都直接当做一行跳了过去,用q命令退出调试。 
重新debug该文件,单行执行到c = myTest() 这行时按Ctrl+F11 使用Step Into功能,发现我们进入了函数内部的代码段

​​         ​      ​​

这就Step Into的主要功能.

Return

​​

Return的功能与Step Into的功能刚好相反,当使用Step Into进入函数之后,按Ctrl+Shift+F11 后会直接跳到该函数的执行的最后一行,

​​

此时再按一遍Ctrl+Shift+F11 或者Ctrl+F10 (单行执行)就可以跳出函数了。

​​

​​

spyder常用功能的更多相关文章

  1. WebStorm 常用功能的使用技巧分享

    WebStorm 是 JetBrain 公司开发的一款 JavaScript IDE,使用非常方便,可以使编写代码过程更加流畅. 本文在这里分享一些常用功能的使用技巧,希望能帮助大家更好的使用这款强大 ...

  2. AVA正则表达式4种常用功能

    正则表达式在字符串处理上有着强大的功能,sun在jdk1.4加入了对它的支持 下面简单的说下它的4种常用功能: 查询: String str="abc efg ABC";  Str ...

  3. [转]WebPack 常用功能介绍

    概述 Webpack是一款用户打包前端模块的工具.主要是用来打包在浏览器端使用的javascript的.同时也能转换.捆绑.打包其他的静态资源,包括css.image.font file.templa ...

  4. FastReport.Net 常用功能总汇

    一.常用控件 文本框:输入文字或表达式 表格:设置表格的行列数,输入数字或表达式 子报表:放置子报表后,系统会自动增加一个页面,你可以在此页面上设计需要的报表.系统在打印处理时,先按主报表打印,当碰到 ...

  5. python3 字符串与列表常用功能

    一.字符串常用功能 1. capitalize(),将字符串的首字母变成大写,其余全部置为小写:如果字符串中有多个单词,也只是将第一个单词的首字母置为大写:例: >>> name = ...

  6. matlab进阶:常用功能的实现,常用函数的说明

    常用功能的实现 获取当前脚本所在目录 current_script_dir = fileparts(mfilename('fullpath')); % 结尾不带'/' 常用函数的说明 bsxfun m ...

  7. WebPack常用功能介绍

    概述 Webpack是一款用户打包前端模块的工具.主要是用来打包在浏览器端使用的javascript的.同时也能转换.捆绑.打包其他的静态资源,包括css.image.font file.templa ...

  8. JavaScript 常用功能总结

    小编吐血整理加上翻译,太辛苦了~求赞! 本文主要总结了JavaScript 常用功能总结,如一些常用的JS 对象,基本数据结构,功能函数等,还有一些常用的设计模式. 目录: 众所周知,JavaScri ...

  9. TeeChart控件的安装与常用 功能设置

    TeeChart控件的安装 TeeChart 7.0 With Source在Delphi 7.0中的安装 一.删除Delphi7自带TeeChart  1.Component -> insta ...

随机推荐

  1. @staticmethod和@classmethod

    一般来说,要使用某个类的方法,需要先实例化一个对象再调用方法. 而使用@staticmethod或@classmethod,就可以不需要实例化,直接类名.方法名()来调用. 这有利于组织代码,把某些应 ...

  2. 雷林鹏分享:jQuery EasyUI 数据网格 - 动态改变列

    jQuery EasyUI 数据网格 - 动态改变列 数据网格(DataGrid)列可以使用 'columns' 属性简单地定义.如果您想动态地改变列,那根本没有问题.为了改变列,您可以重新调用dat ...

  3. 8.3 GOF设计模式二: 适配器模式 Adapter

    GOF设计模式二: 适配器模式 Adapter  为中国市场生产的电器,到了美国,需要有一个转接器才能使用墙上的插座,这个转接 器的功能.原理?复习单实例模式  SingleTon的三个关键点  ...

  4. 【单调队列优化dp】 分组

    [单调队列优化dp] 分组 >>>>题目 [题目] 给定一行n个非负整数,现在你可以选择其中若干个数,但不能有连续k个数被选择.你的任务是使得选出的数字的和最大 [输入格式] ...

  5. centos6.0和7.4默认网卡配置

    6.0 vim /etc/sysconfig/network-scripts/ifcfg-eth0 DEVICE="eth0" NM_CONTROLLED="yes&qu ...

  6. 《网络是怎样连接的》PDF电子版书籍分享

    资料下载地址: 链接:https://pan.baidu.com/s/15tN9klTEsu-mQLayxI979g 提取码:ptu1 封面如下所示:

  7. hbase-0.92.1集群部署

    环境 主机名 IP地址 角色 安装目录 sht-sgmhadoopnn-01 172.16.101.55 NameNode.SecondaryNameNode. JobTracker.HMaster ...

  8. boost库中的 program_options

    1.阅读rviz中的源码时在rviz/visualizer_app.cpp中遇到如下代码: po::options_description options; options.add_options() ...

  9. hive的排序,分組练习

    hive的排序,分組练习 数据: 添加表和插入数据(数据在Linux本地中) create table if not exists tab1( IP string, SOURCE string, TY ...

  10. k-近邻法(kNN)

    原理: 已知一个训练样本集(有标签),计算待测试样本与所有训练样本的距离. 按距离从小到大进行排序并取前 k 个,统计 k 个中出现次数最多的分类为分类结果. 优点:精度高,对异常值不敏感,无数据输入 ...