python作为一种脚本语言,很多时候我们习惯于它的简洁,习惯于它的修改就能看到结果的特性。对于python的调试,有很多种方式,今天我们就来简单介绍下。

Print

对于脚本语言,调试最简单的方式就是打印输出,而print函数就可以输出各种类型变量,配合着格式化输出,我们可以打印出程序运行过程中各个变量的状态值。

使用这种方式的好处是我们不需要引入其它包,我们只需要使用简单的print就可以调试我们的程序,当然,它的缺点也很明显,有时候为了调试一些变量,我们不得不写很多print语句,而且有时候为了更优雅地显示数据,我们不得不写很多代码。

Icecream

这是一个调试输出插件,相比于print函数,它可以自动优雅地输出各种变量类型,它会输出变量的位置,它可以输出函数的值,它还可以将值输出写入日志中。

通过引入icecream包,我们就可以在程序中更加简单地优雅地输出调试变量和函数的值,但是它和print函数一样,没有解决调试的侵入性问题,会产生调试代码。

PySnooper

前面我们提到了print和icecream都会产生调试代码,当调试结束之后我们还需要删除它们,那么有没有一种非侵入式地调试方式呢,答案是肯定的,那就是pysnooper。

pysnooper通过使用装饰器,可以非侵入式地调试代码,并且它输出的信息很详细,我们可以清楚地看到函数的调用层级,可以清楚地看到变量值的变化过程。并且它是支持调试信息的输出位置配置,默认是在控制台输出,当然,我们也可以在日志中输出调试。

pdb

我们知道调试c语言的时候有gdb,而调试python的时候,我们有pdb,它和gdb而很类似,我们可以进行断点设置,可以进行逐行调试,可以进入断点,可以设置修改变量值,配合着IDE,可以说pdb是我们最常用的,也是最方便的调试方法。

通过设置断点,我们完全不需要写任何代码就可以查看运行中变量的值,通过逐行调试,也有助于我们分析代码。

总结

无论何种调试方式,选择一个适合自己的最重要,毕竟把代码写好才是最重要的。

【编辑推荐】

【责任编辑:华轩 TEL:(010)68476606】

点赞 0

python常用的程序调试方法_Python调试的几种方式相关推荐

  1. python异常处理的方法_python异常处理的四种方式,不只是try

    对于python程序中,进行异常捕获,一般我们都用try except,但是还有其他方式经常使用. 以后再进行异常处理时,知道有四种方式,可以考虑更合适的方式 下面介绍一下四种方式 1.内部抛出异常( ...

  2. python常用的数字类型方法_python基础--数据类型的常用方法1

    1.数字类型 整型 用途:存qq号,手机号,不带字母的身份证号... 进制转换: 二进制转十进制:10 -->  1*(2**1) + 0*(2**0) 2 八进制转十进制:  235  --& ...

  3. python真正实现多线程的方法_python多线程几种方法实现

    匿名用户 1级 2018-05-27 回答 Python进阶(二十六)-多线程实现同步的四种方式 临界资源即那些一次只能被一个线程访问的资源,典型例子就是打印机,它一次只能被一个程序用来执行打印功能, ...

  4. python常用进制转换の方法

    python常用进制转换の方法 (正整数)任意进制转十进制 1.int()函数 ''' 描述 int() 函数用于将一个字符串或数字转换为整型. 语法 class int(x, base=10) 参数 ...

  5. python用于导入模块或模块中的对象_在 Python 中导入模块中的对象有哪几种方式? (5.0分)_学小易找答案...

    [判断题]尽管可以使用 import 语句一次导入任意多个标准库或扩展库,但是仍建议每次只导入一个标准库或扩展库. (2.0分) [填空题]表达式 int(str(34)) == 34 的值为 ___ ...

  6. python可以调试吗_python调试的几种方法

    第一种方法简单直接粗暴有效,就是用print把可能有问题的变量打印出来看看: # err.py def foo(s): n = int(s) print '>>> n = %d' % ...

  7. python怎么打开程序管理器_Python 进程管理工具 Supervisor 使用教程

    因为我的个人网站 restran.net 已经启用,博客园的内容已经不再更新.请访问我的个人网站获取这篇文章的最新内容,Python 进程管理工具 Supervisor 使用教程 Supervisor ...

  8. python定义私有变量的方法_Python类中的 私有变量和私有方法

    默认情况下,Python中的成员函数和成员变量都是公开的(public),在python中没有类似public,private等关键词来修饰成员函数和成员变量. 在python中定义私有变量只需要在变 ...

  9. python列表使用技巧与方法_Python列表的相关操作与方法

    Python列表的相关操作与方法 1.列表 why:int.bool.str存在缺陷 str:存储少量的数据:所有的操作获取的内容都是 str类型,存储的数据类型单一. what: 列表可以承载任意数 ...

最新文章

  1. 支付宝app支付总结
  2. 自己发现的数学规律一
  3. SAP License:面试谈
  4. java里有位移吗_Java 中位移运算符 ,,
  5. SpringBoot实战之文件上传微软云(Azure Storage)
  6. EXCEL图表技巧:选择合适图表最全指南,建议收藏
  7. M3U8视频下载为mp4
  8. 数学建模常用的分析法及其MATLAB实现
  9. 金融行业基于 DELL EMC 高端存储的核心系统实践经验分享
  10. 使用PicGo快速搭建图床
  11. 等效焦距和可视角度换算表
  12. 激光雷达发射的激光属于哪个范围???和毫米波波长相比如何???
  13. 扫地机器人路径规划算法
  14. AutoJs学习-自动抢单学习
  15. Word删除全文图片
  16. 微耕门禁控制器的刷卡开刷卡关功能
  17. LCD1602知识详解(很详尽的)
  18. matlab中cla和clf作用,28377中CLA初始化部分不明白Cla1Task1和cla1Isr1的区别
  19. java上传图片报404_如何解决SpringBoot集成百度UEditor图片上传后直接访问404
  20. Flutter 一行代码快速实现你的进度条

热门文章

  1. druid连接泄漏GetConnectionTimeoutException: wait millis 60000, active 5, maxActive 5, creating 0
  2. 两天内,清华、北大发布三则讣告
  3. 2018-1-11-【转】PHP简洁之道
  4. 【BZOJ 3991】 [SDOI2015]寻宝游戏
  5. Java基础之nextInt()与nextLine()区别(包括nextInt之后无法nextLine无法读取下一行的数据)
  6. matlab中的zeros函数
  7. 亚马逊、lazada、eBay、shopee、wish、速卖通、沃尔玛、mercari、Newegg、阿里国际、Tik Tok怎么测评才比较安全?
  8. Java8特性之Stream的常用方法:filter,map,sorted
  9. vue 获取数组长度_Vue数据响应式
  10. 如何下载北辰区卫星地图高清版大图?