python常用的程序调试方法_Python调试的几种方式
python作为一种脚本语言,很多时候我们习惯于它的简洁,习惯于它的修改就能看到结果的特性。对于python的调试,有很多种方式,今天我们就来简单介绍下。
对于脚本语言,调试最简单的方式就是打印输出,而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调试的几种方式相关推荐
- python异常处理的方法_python异常处理的四种方式,不只是try
对于python程序中,进行异常捕获,一般我们都用try except,但是还有其他方式经常使用. 以后再进行异常处理时,知道有四种方式,可以考虑更合适的方式 下面介绍一下四种方式 1.内部抛出异常( ...
- python常用的数字类型方法_python基础--数据类型的常用方法1
1.数字类型 整型 用途:存qq号,手机号,不带字母的身份证号... 进制转换: 二进制转十进制:10 --> 1*(2**1) + 0*(2**0) 2 八进制转十进制: 235 --& ...
- python真正实现多线程的方法_python多线程几种方法实现
匿名用户 1级 2018-05-27 回答 Python进阶(二十六)-多线程实现同步的四种方式 临界资源即那些一次只能被一个线程访问的资源,典型例子就是打印机,它一次只能被一个程序用来执行打印功能, ...
- python常用进制转换の方法
python常用进制转换の方法 (正整数)任意进制转十进制 1.int()函数 ''' 描述 int() 函数用于将一个字符串或数字转换为整型. 语法 class int(x, base=10) 参数 ...
- python用于导入模块或模块中的对象_在 Python 中导入模块中的对象有哪几种方式? (5.0分)_学小易找答案...
[判断题]尽管可以使用 import 语句一次导入任意多个标准库或扩展库,但是仍建议每次只导入一个标准库或扩展库. (2.0分) [填空题]表达式 int(str(34)) == 34 的值为 ___ ...
- python可以调试吗_python调试的几种方法
第一种方法简单直接粗暴有效,就是用print把可能有问题的变量打印出来看看: # err.py def foo(s): n = int(s) print '>>> n = %d' % ...
- python怎么打开程序管理器_Python 进程管理工具 Supervisor 使用教程
因为我的个人网站 restran.net 已经启用,博客园的内容已经不再更新.请访问我的个人网站获取这篇文章的最新内容,Python 进程管理工具 Supervisor 使用教程 Supervisor ...
- python定义私有变量的方法_Python类中的 私有变量和私有方法
默认情况下,Python中的成员函数和成员变量都是公开的(public),在python中没有类似public,private等关键词来修饰成员函数和成员变量. 在python中定义私有变量只需要在变 ...
- python列表使用技巧与方法_Python列表的相关操作与方法
Python列表的相关操作与方法 1.列表 why:int.bool.str存在缺陷 str:存储少量的数据:所有的操作获取的内容都是 str类型,存储的数据类型单一. what: 列表可以承载任意数 ...
最新文章
- 支付宝app支付总结
- 自己发现的数学规律一
- SAP License:面试谈
- java里有位移吗_Java 中位移运算符 ,,
- SpringBoot实战之文件上传微软云(Azure Storage)
- EXCEL图表技巧:选择合适图表最全指南,建议收藏
- M3U8视频下载为mp4
- 数学建模常用的分析法及其MATLAB实现
- 金融行业基于 DELL EMC 高端存储的核心系统实践经验分享
- 使用PicGo快速搭建图床
- 等效焦距和可视角度换算表
- 激光雷达发射的激光属于哪个范围???和毫米波波长相比如何???
- 扫地机器人路径规划算法
- AutoJs学习-自动抢单学习
- Word删除全文图片
- 微耕门禁控制器的刷卡开刷卡关功能
- LCD1602知识详解(很详尽的)
- matlab中cla和clf作用,28377中CLA初始化部分不明白Cla1Task1和cla1Isr1的区别
- java上传图片报404_如何解决SpringBoot集成百度UEditor图片上传后直接访问404
- Flutter 一行代码快速实现你的进度条
热门文章
- druid连接泄漏GetConnectionTimeoutException: wait millis 60000, active 5, maxActive 5, creating 0
- 两天内,清华、北大发布三则讣告
- 2018-1-11-【转】PHP简洁之道
- 【BZOJ 3991】 [SDOI2015]寻宝游戏
- Java基础之nextInt()与nextLine()区别(包括nextInt之后无法nextLine无法读取下一行的数据)
- matlab中的zeros函数
- 亚马逊、lazada、eBay、shopee、wish、速卖通、沃尔玛、mercari、Newegg、阿里国际、Tik Tok怎么测评才比较安全?
- Java8特性之Stream的常用方法:filter,map,sorted
- vue 获取数组长度_Vue数据响应式
- 如何下载北辰区卫星地图高清版大图?