这篇文章主要介绍了调试Python程序代码的几种方法总结,文中代码基于Python2.x版本,需要的朋友可以参考下
程序能一次写完并正常运行的概率很小,基本不超过1%。总会有各种各样的bug需要修正。有的bug很简单,看看错误信息就知道,有的bug很复杂,我们需要知道出错时,哪些变量的值是正确的,哪些变量的值是错误的,因此,需要一整套调试程序的手段来修复bug。
第一种方法简单直接粗暴有效,就是用print把可能有问题的变量打印出来看看:

执行后在输出中查找打印的变量值:

用print最大的坏处是将来还得删掉它,想想程序里到处都是print,运行结果也会包含很多垃圾信息。所以,我们又有第二种方法。
断言
凡是用print来辅助查看的地方,都可以用断言(assert)来替代:

assert的意思是,表达式n!=0应该是True,否则,后面的代码就会出错。
如果断言失败,assert语句本身就会抛出AsserTIonError:

程序中如果到处充斥着assert,和print相比也好不到哪去。不过,启动Python解释器时可以用-O参数来关闭assert:

关闭后,你可以把所有的assert语句当成pass来看。
logging
把print替换为logging是第3种方式,和assert比,logging不会抛出错误,而且可以输出到文件:

logging.info()就可以输出一段文本。运行,发现除了ZeroDivisionError,没有任何信息。怎么回事?
别急,在importlogging之后添加一行配置再试试:

看到输出了:

这就是logging的好处,它允许你指定记录信息的级别,有debug,info,warning,error等几个级别,当我们指定level=INFO时,logging.debug就不起作用了。同理,指定level=WARNING后,debug和info就不起作用了。这样一来,你可以放心地输出不同级别的信息,也不用删除,最后统一控制输出哪个级别的信息。
logging的另一个好处是通过简单的配置,一条语句可以同时输出到不同的地方,比如console和文件。
相关推荐
发表于 2018-04-03 23:41
•
67次阅读
Python 的学习,知识涵盖极为广泛,对不同应用目标的学习,进阶的路线有很大的差异,以下分别介绍常...
发表于 2018-04-02 15:43
•
408次阅读
在AI开发中使用Lisp语言,是因为它的灵活性使快速建模和实验成为可能,这反过来又促进了Lisp在A...
发表于 2018-03-31 11:07
•
705次阅读
最小生成树(Minimum Spanning Trees),简称MST。是图论中一个非常重要的概念。...
发表于 2018-03-31 10:32
•
351次阅读
所以,需要我们另外填写的参数为:shareid、from、bdstoken、filelist 和 p...
发表于 2018-03-31 09:18
•
385次阅读
提供真正的数组,相比Python内置列表来说速度更快,NumPy也是Scipy、Matplotlib...
发表于 2018-03-31 09:16
•
426次阅读
FANUC报警号大全
发表于 2018-03-30 15:43
•
140次阅读
首先她下载并安装了 Phue 到 Tableau - Python - Server(又称为 Tab...
发表于 2018-03-30 10:55
•
202次阅读
日前举行的中国发展高层论坛上,百度董事长兼CEO李彦宏表示,“中国人对隐私问题的态度更开放,也相对来...
发表于 2018-03-30 10:22
•
290次阅读
我们看到,第二条GET请求地址变了,并且在返回的信息中,我们看到,这个网页执行了一个POST请求。P...
发表于 2018-03-29 15:36
•
145次阅读
此函数试图改变 im2 的颜色来适配 im1。它通过用 im2 除以 im2 的高斯模糊值,然后乘以...
发表于 2018-03-29 15:32
•
81次阅读
现在我们可以创建创世区块了,我们需要一个函数来生成该区块链中的后继区块。该函数将获取链中的前一个区块...
发表于 2018-03-29 15:29
•
331次阅读
如何在 Linux 上安装应用程序?因为有许多操作系统,这个问题不止有一个答案。应用程序可以可以来自...
发表于 2018-03-29 15:22
•
86次阅读
这篇文章主要介绍了解决不重复序列的全排列问题的两个方法:递归和字典序法。
发表于 2018-03-29 11:19
•
74次阅读
诞生之初用来作为配置管理语言的Python,现在已经成为最流行的编程语言之一,尤其是随着AI应用的兴...
发表于 2018-03-28 09:28
•
210次阅读
发表于 2018-03-27 16:06
•
163次阅读
uri指请求中不包含参数的部分; request_uri指原始的请求,包含参数或者无参数; args...
发表于 2018-03-27 15:48
•
333次阅读
发表于 2018-03-26 23:27
•
186次阅读
发表于 2018-03-26 17:22
•
217次阅读
发表于 2018-03-26 16:29
•
230次阅读
另一个原因是我们可以将 Python 用在很多地方:数据科学、Web 开发和机器学习等都可以使用 P...
发表于 2018-03-26 15:58
•
141次阅读
发表于 2018-03-26 10:50
•
171次阅读
学好PLC须掌握的三个典型程序实例
发表于 2018-03-26 09:02
•
620次阅读
发表于 2018-03-23 18:19
•
283次阅读
发表于 2018-03-23 16:17
•
186次阅读
作者用Jieba + Word2vec + NetworkX 结合在一起,做了一次自然语言分析,语料...
发表于 2018-03-23 16:01
•
249次阅读
Scala是一门多范式的编程语言,一种类似java的编程语言,设计初衷是实现可伸缩的语言、并集成面向...
发表于 2018-03-23 13:59
•
271次阅读
发表于 2018-03-23 13:09
•
339次阅读
发表于 2018-03-22 21:31
•
272次阅读
目前常见的Wi-Fi加密方式有WEP、WPA2和WPS(链接为各自的破解方式),不过有网友反映以往破...
发表于 2018-03-21 16:22
•
694次阅读
Python 如何爬取CSDN的极客头条呢?
发表于 2018-03-21 14:58
•
176次阅读
后端使用字典进行缓存,使用缓存管理轻松访问多个缓存对象,当使用模块级缓存对象,重构运行时的缓存设置....
发表于 2018-03-21 14:53
•
229次阅读
以下列出了学习 Python 时犯的三种错误:
1.可变数据类型作为函数定义中的默认参数
2.可...
发表于 2018-03-21 11:46
•
74次阅读
我个人超级喜欢 Matthew Inman 的漫画。它们在疯狂搞笑的同时,却又发人深省。但是,我很厌...
发表于 2018-03-20 14:30
•
210次阅读
协程的优点:(1)无需线程上下文切换的开销,协程避免了无意义的调度,由此可以提高性能(但也因此,程序...
发表于 2018-03-18 11:22
•
448次阅读
一颗强力的大脑是系统的灵魂,i.MX RT系列高实时微处理器,集成Cortex-M7内核,最高600...
发表于 2018-03-17 10:53
•
613次阅读
在做大数据的时候,首先第一步就是要解决数据的来源,我们采用的设计方案就是使用Python来从一些政府...
发表于 2018-03-17 09:13
•
221次阅读
PrettyPrinter是Python 3.6 及以上版本中的一个功能强大、支持语法高亮、描述性的...
发表于 2018-03-17 09:04
•
468次阅读
简单地说,计算机图形学的主要研究内容就是研究如何在计算机中表示图形、以及利用计算机进行图形的计算、处...
发表于 2018-03-16 15:23
•
434次阅读
Python的用途十分广泛,不同的程序员将其用于不用的领域,不同的程序员将自己的代码打包成库,供其他...
发表于 2018-03-16 15:15
•
382次阅读
随着Python在企业中的应用越来越多,岗位需求越来越大,面试成为了搞定优质职位的快速方式,下面是笔...
发表于 2018-03-16 09:29
•
443次阅读
用HI-TECH C写的使用PIC12C508读写93LC4。
static volatile b...
发表于 2018-03-14 13:52
•
53次阅读
2017年被称为中国人工智能元年——在两会期间,人工智能技术已经成为国家战略,同时被写进政府报告。在...
发表于 2018-03-12 12:38
•
92次阅读
线程和进程的区别在于,子进程和父进程有不同的代码和数据空间,而多个线程则共享数据空间,每个线程有自己...
发表于 2018-03-12 08:48
•
139次阅读
本文开始对Python的概念以及Python的特点进行了介绍,其次介绍了Python搭建开发环境与应...
发表于 2018-03-07 17:49
•
1306次阅读
搜索是大数据领域里常见的需求。Splunk和ELK分别是该领域在非开源和开源领域里的领导者。本文利用...
发表于 2018-03-06 17:26
•
545次阅读
Python 以其简单易懂的语法格式与其它语言形成鲜明对比,初学者遇到最多的问题就是不按照 Pyth...
发表于 2018-03-06 17:03
•
511次阅读
在Python社区文化的浇灌下,演化出了一种独特的代码风格,去指导如何正确地使用Python,这就是...
发表于 2018-03-06 10:35
•
269次阅读
本文介绍了如何在树莓派上,使用 OpenCV 和 Python 完成人脸检测项目。该项目不仅描述了识...
发表于 2018-03-06 09:00
•
2039次阅读
NumPy系统是Python的一种开源的数值计算扩展,它也是是Python数据分析必不可少的第三方库...
发表于 2018-03-05 15:41
•
371次阅读
包管理是python这个Get的重要部分。本文介绍了Python的各个包管理工具之间的关系,相信通过...
发表于 2018-02-26 15:34
•
378次阅读
在这篇教程中,你将用Python完成你的第一个机器学习项目:
1.下载并安装Python SciP...
发表于 2018-02-10 03:10
•
2518次阅读
Python已经成为漏洞开发领域的行业标准,读者会发现大多数概念验证工具都是用Python语言编写的...
发表于 2018-02-09 15:27
•
1090次阅读
php的正式环境部署非常简单,改几个文件就OK,用FastCgi方式也是分分钟的事情。相比起来,Py...
发表于 2018-02-09 09:26
•
739次阅读
这不Github上一位大神就把 Python 3 的几乎所有语法重点都整理到了一张图上,对于有编程基...
发表于 2018-02-09 09:22
•
1090次阅读
在python世界,拥有一个永恒的道,那就是“type”,请记在脑海中,type就是道。如此广袤无垠...
发表于 2018-02-09 09:16
•
328次阅读
作为一名程序员或者准程序员,对于面向对象编程简直熟悉的不能再熟悉。作为当今最流行的编程思想之一(或许...
发表于 2018-02-06 14:54
•
901次阅读
栈(stack)又称之为堆栈是一个特殊的有序表,其插入和删除操作都在栈顶进行操作,并且按照先进后出,...
发表于 2018-02-05 14:55
•
417次阅读
在本文中,我们将介绍那些用于 AI 开发的高质量库,并谈谈它们的优缺点,以及特性。
发表于 2018-02-05 14:47
•
1048次阅读
我们知道,任何编程语言编写的程序归根到底都是由底层机器的机器代码(01序列)执行的,无论是编译型语言...
发表于 2018-02-05 09:58
•
848次阅读
为什么要挑战自己在代码里不写for loop?因为这样可以迫使你去使用比较高级、地道的语法或库。本文...
发表于 2018-02-05 09:11
•
799次阅读
本文介绍机器学习中一种基于概率的常见的分类方法,朴素贝叶斯,之前介绍的KNN, decision t...
发表于 2018-02-03 14:37
•
921次阅读
用深度学习模型——Mask R-CNN,自动从视频中制作目标物体的GIF动图。
发表于 2018-02-03 14:19
•
955次阅读
本文主要介绍了Python编程实现蚁群算法详解,涉及蚂蚁算法的简介,主要原理及公式,以及Python...
发表于 2018-02-02 10:36
•
216次阅读
简单地说,一个函数就是一组Python语句的组合,它们可以在程序中运行一次或多次运行。Python中...
发表于 2018-02-01 15:53
•
811次阅读
ngxtop是用python开发的一款监控nginx访问日志的工具,
它可以实时动态地查看访问...
发表于 2018-02-01 11:44
•
693次阅读
为了使初学者能够轻松地从 Python 2 向 Python 3 实现迁移,我收集了一些 Pytho...
发表于 2018-01-31 15:11
•
566次阅读
随着大数据概念的火热,啤酒与尿布的故事广为人知。我们如何发现买啤酒的人往往也会买尿布这一规律?数据挖...
发表于 2018-01-31 15:04
•
784次阅读
异常处理在任何一门编程语言里都是值得关注的一个话题,良好的异常处理可以让你的程序更加健壮,清晰的错误...
发表于 2018-01-31 14:20
•
699次阅读
我发现自己在学习mock的过程中遇到的主要困难是不清楚mock能做什么,而不是mock对象到底有哪些...
发表于 2018-01-30 15:26
•
810次阅读
Python是一种面向对象的解释型计算机程序设计语言,由荷兰人发明,第一个公开发行版发行于1991年...
发表于 2018-01-30 14:16
•
123次阅读
C语言的精髓点在哪? 学到多少东西才能够达到做项目的标准?学习的时候需要注意哪些细节点?疑问太多以至...
发表于 2018-01-29 10:16
•
716次阅读
本文为大家介绍只刷新一次和根据间隔时间一直刷新的定时刷新程序详解。
发表于 2018-01-26 16:09
•
120次阅读
如何入门Python,看看别人的经验吧。
发表于 2018-01-25 13:44
•
927次阅读
numpy(Numerical Python)提供了python对多维数组对象的支持:ndarray...
发表于 2018-01-24 13:55
•
822次阅读
EETOP网友很多是IC设计相关的,特别是从事IC验证的,经常会编写脚本,以前用的最多的应该是Per...
发表于 2018-01-22 10:43
•
844次阅读
让我们一起攻破世界上最流行的WordPress的验证码插件每个人都讨厌验证码——在你被允许访问一个网...
发表于 2018-01-22 09:15
•
625次阅读
2018 年即将到来,Coding Dojo(编码道场)发布了 2018 最具就业前景的 7 大编程...
发表于 2018-01-18 14:37
•
1050次阅读
树莓派是一个非常廉价的、只有手掌大小的完全可编程的计算机。虽然树莓派的体积小,但是它的潜力无限。你可...
发表于 2018-01-17 14:10
•
821次阅读
根据一些我收到的反馈,大家似乎有点混淆——Cython是用来生成 C 扩展到而不是独立的程序的。所有...
发表于 2018-01-16 16:35
•
706次阅读
由于涉及编程,学习ARM单片机系统对于从事电子电路的设计者来说是有些困难的,学习知识不难,难的是理清...
发表于 2018-01-16 14:32
•
1064次阅读
字符编码是计算机编程中不可回避的问题,不管你用 Python2 还是 Python3,亦或是 C++...
发表于 2018-01-16 09:08
•
915次阅读
Python(英国发音:/ˈpaɪθən/ 美国发音:/ˈpaɪθɑːn/),是一种面向对象的解释型...
发表于 2018-01-15 17:26
•
1975次阅读
树莓派是一个非常廉价的、只有手掌大小的完全可编程的计算机。虽然树莓派的体积小,但是它的潜力无限。你可...
发表于 2018-01-15 17:00
•
1197次阅读
我咨询了我们真正的数据专家,收集整理了他们认为所有数据专家都应该会的七款 Python 工具。The...
发表于 2018-01-15 10:21
•
917次阅读
本文主要介绍了python串口接收数据。其中涉及了Python使用线程来接收串口数据,以及pytho...
发表于 2018-01-15 09:52
•
848次阅读
本文主要介绍了几种python串口编程实例。Python是纯粹的自由软件, 源代码和解释器CPyth...
发表于 2018-01-15 09:35
•
1469次阅读
本文主要介绍了python程序调试中设置条件断点。实际开发中,调试代码通常要花费比新编写代码更多的时...
发表于 2018-01-14 11:39
•
275次阅读
本文为大家介绍rs232串口通信程序。
发表于 2018-01-14 11:38
•
476次阅读
本文主要介绍了python断点调试方法,pdb 是 python 自带的一个包,为 python 程...
发表于 2018-01-14 10:44
•
312次阅读
代码用的Python+Splinter开发,Splinter是一个使用Python开发的开源Web应...
发表于 2018-01-13 10:32
•
1657次阅读
本文主要介绍了利用python来实现小波阈值去噪算法。网上都是利用matlab来实现小波阈值去噪的,...
发表于 2018-01-10 16:32
•
579次阅读
单片机烧录程序并不复杂,只需几个步骤就能搞定。
发表于 2018-01-09 16:33
•
745次阅读
AT24C512是Atmel公司生产的64KB串行电可擦的可编程存储器,内部有512页,每一页为12...
发表于 2018-01-09 16:21
•
387次阅读
本文为大家带来AT24C256烧录的完整程序。
发表于 2018-01-09 16:03
•
281次阅读
一个通用的24C01-24C256共9种EEPROM的字节读写操作程序,此程序有五个入口条件,分别为...
发表于 2018-01-09 15:35
•
393次阅读
很多人按照我之前的Python安装教程可以成功,但是方法之下必定有BUG,所以还有一部分人(电脑)无...
发表于 2018-01-08 10:00
•
951次阅读
本文的目的就是列举并描述Python可用的最有用的机器学习工具和库。这也仅仅是抛砖引玉,希望大家能提...
发表于 2018-01-05 18:45
•
163次阅读
能够用来做统计分析的软件和程序很多,目前应用比较广泛的包括:SPSS, SAS、R语言,Matlab...
发表于 2018-01-05 17:07
•
932次阅读
分析比较这两种语言到底哪个好,得看你的用途。R主要在学术界流行,python在工程方便比较实用。我的...
发表于 2018-01-05 15:32
•
238次阅读
评论