百度360必应搜狗淘宝本站头条
当前位置:网站首页 > 技术资源 > 正文

快速认识Python中的代码调试(python调用代码)

off999 2024-10-24 12:21 32 浏览 0 评论

作者:叩丁狼教育,黎智煊老师

调试

程序能一次写完并正常运行的概率很小,基本不超过1%。总会有各种各样的bug需要修正。有的bug很简单,看看错误信息就知道,有的bug很复杂,我们需要知道出错时,哪些变量的值是正确的,哪些变量的值是错误的,因此,需要一整套调试程序的手段来修复bug。

  1. 第一种方法简单直接粗暴有效,就是用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,没有任何信息。怎么回事?

在import logging之后添加一行配置再试试:

看到输出了:

  • 这就是logging的好处,它允许你指定记录信息的级别,有debug,info,warning,error等几个级别,当我们指定level=INFO时,logging.debug就不起作用了。同理,指定level=WARNING后,debug和info就不起作用了。这样一来,你可以放心地输出不同级别的信息,也不用删除,最后统一控制输出哪个级别的信息。
  • logging的另一个好处是通过简单的配置,一条语句可以同时输出到不同的地方,比如console和文件。

pdb

Debug 对于任何开发人员都是一项非常重要的技能,它能够帮助我们准确的定位错误,发现程序中的 bug。python 提供了一系列 debug 的工具和包,可供我们选择。本文将主要阐述如何利用 python debug 相关工具进行 debug。

第4种方式是启动Python的调试器pdb

使用 pdb 进行调试

pdb 是 python 自带的一个包,为 python 程序提供了一种交互的源代码调试功能,主要特性包括设置断点、单步调试、进入函数调试、查看当前代码、查看栈片段、动态改变变量的值等。pdb 提供了一些常用的调试命令,详情见表 1。

pdb 常用命令

让程序以单步方式运行,可以随时查看运行状态。我们先准备好程序:

然后启动:

以参数-m pdb启动后,pdb定位到下一步要执行的代码-> s = '0'。输入命令l来查看代码:

输入命令n可以单步执行代码:

任何时候都可以输入命令p 变量名来查看变量:

输入命令q结束调试,退出程序:

(Pdb) q

这种通过pdb在命令行调试的方法理论上是万能的,但实在是太麻烦了,如果有一千行代码,要运行到第999行得敲多少命令啊。还好,我们还有另一种调试方法。

pdb.set_trace()

这个方法也是用pdb,但是不需要单步执行,我们只需要import pdb,然后,在可能出错的地方放一个pdb.set_trace(),就可以设置一个断点:

运行代码,程序会自动在pdb.set_trace()暂停并进入pdb调试环境,可以用命令p查看变量,或者用命令c继续运行:

这个方式比直接启动pdb单步调试效率要高很多,但也高不到哪去。

其他调试方式

可以使用各类IDE自带的调试工具,优秀的python工具有pycharm,visual studio code,pydev等等.

相关推荐

360免费wifi老版本(360免费wifi2019下载安装)
  • 360免费wifi老版本(360免费wifi2019下载安装)
  • 360免费wifi老版本(360免费wifi2019下载安装)
  • 360免费wifi老版本(360免费wifi2019下载安装)
  • 360免费wifi老版本(360免费wifi2019下载安装)
无线wifi路由器怎么安装(请问无线路由器怎么安装)

安装的方法/步骤:1、怎么安装无线路由器呢?首先把网线的其中一头插入进光猫里面。2、接着用网线的另一头插入进无线路由器的蓝色接口处,这样就安装好无线路由器啦。3、点击打开电脑浏览器,输入路由器设置地址...

fat32格式化精灵(格式化fat32格式工具)

内存卡格式化一般有两种方式:第一种是直接将内存卡插入手机的卡托,然后进入设置——运行及内存管理,点击格式化SD卡即可完成。当然有一些手机是不支持外置的内存卡插入,这就需要用OTG线插入手机,点击手机的...

外置光驱安装win7系统(外置光驱安装操作系统)

苹果电脑、电源适配器丶光盘装系统(电脑有光驱、或者外接光驱)光盘安装准备:win764位纯净版安装盘,如果使用的苹果电脑有光驱,优先使用自带光驱安装;如电脑没有光驱,可以是用外接USB光驱安装。光盘...

win7x86是32位还是64位

32位win7x86是32位操作系统,win7x64是64位操作系统。扩展资料Windows7,中文名称视窗7,是由微软公司(Microsoft)开发的操作系统,内核版本号为WindowsNT...

用我告诉你安装win7(安装win7教程)

方法一:使用工具在线一键下载安装win7(win7正式版只需使用正版密钥激活即可)1、在电脑安装好小白一键重装系统工具打开,选择原版win7旗舰版系统,点击安装此系统。2、等待软件自动下载系统镜像文件...

sd卡如何修复(如何修复sd卡视频教程)

修复SD卡的三个步骤如下:1.使用磁盘检测工具检查SD卡的错误:您可以使用Windows操作系统中自带的磁盘检查工具或第三方软件来检查并修复SD卡中的错误。2.格式化SD卡:如果检查后发现错误无法...

安卓手机杀毒软件哪个最好用

腾讯手机管家的守护老人安全功能版本我在用,我来说说吧。此版本是专门为守护老人安全设计推出的,不但有效拦截诈骗短信,电话,木马病毒,钓鱼网址,辟谣功能可以帮助老人立即分辨养生讯息,银行卡故障讯息,保险异...

xp3用什么模拟器打开(xp3用什么模拟器打开好)

可以按照以下的步骤排查解决:首先,游戏必须要使kirikiri引擎,这点可以从文件中是否含有部分xp3后缀的文件来判断然后用模拟器打开date.xp3就行了,部分汉化游戏是直接打开exe程序如果遇到d...

固态硬盘用mbr还是guid(固态硬盘guid好还是mbr好)

如果电脑原装系统是win8或者以上的,那么硬盘分区表格式为GUID(GPT)格式的;如果是win7以下的,那么一般就是MBR的。主引导记录(MBR)是计算机开机后访问硬盘时所必须要读取的首个扇区,由分...

为什么fps大神都是400dpi(fps为什么高)

400DPI,在游戏里调节不同英雄的鼠标灵敏度,可以保证最小范围微调改动鼠标移动速度。因为DPI和灵敏度是乘积关系。举个例子:如果你玩麦克雷时鼠标DPI是3200,游戏内灵敏度是1。但你切换到源氏和闪...

系统集成项目管理工程师难考吗

  系统集成项目管理工程师考试的普遍通过率是在10%左右,但是并不表示考试真的有那么难。因为考试本身没有报考条件的限制,且考试报名费用很低,很多人都不重视考试。所以通过率普遍偏低,只要你认真备考,有一...

360影视大全下载2025免费版(下载360影视大全最新版下载安装到手机版)

你好朋友360影视大全里的很多视频都是免费的,建议安装最新的360影视大全就可以了打开360视频,搜索自己需要的视频,点击360播放器右下角的下载箭头,即可将视频进行下载,下载完毕之后视频会保存在36...

360安全卫士手机版下载(360安全卫士官方免费下载手机版5.5.0)

相当靠谱360手机卫士是一款由奇虎网推出的功能强、效果好、受用户欢迎的上网安全软件。360安全卫士拥有查杀木马、清理插件、修复漏洞、电脑体检、保护隐私等多种功能,并独创了“木马防火墙”“360密盘”等...

deepin和统信uos(统信和deepin的区别)

差不多。1Deepin原名LinuxDeepin、deepinos、深度操作系统,于2014年4月改名Deepin。deepin团队基于Qt/C++(用于前端)和Go(用于后端)开发了的全新深度桌...

取消回复欢迎 发表评论: