开发者社区> Carl_奕然> 正文

Python3,自从掌握了这个方法,再也不用print进行调试了。

简介: 有了这个方法, 还要什么print
+关注继续查看

1、引言


小屌丝:鱼哥,调试代码,除了Debug,还有什么其他的神器没?

小鱼:额… 你这是要飞天吗?

小屌丝:我很低调的好不好。

小鱼:还说低调,那你Debug咋都不用,还说低调?

小屌丝:我觉得Debug太慢了,

小鱼:…被你装到了。

小屌丝:反正我不管, 就得帮我想个神器…

小鱼:… 好吧, 容我想一下。

2000.jpg


小鱼:你别说,我还真的想到一个。

小屌丝:我擦…被你装到了, 我就知道你有货。

小鱼:低调, 我很低调的好不。

小屌丝:好吧,那你向我展示一下你说的神器。

小鱼:嘿嘿…

展示技术.png



2、代码实战


2.1 介绍


今天说到的这个神器,就是PySnooper,它的工作原理很简单,就是替代print的工作。

我们都知道, print一行, 则输出一行。

而PySnooper的功能就是把所有的一起输出。

2.2 安装


涉及到第三方库,肯定就需要安装

老规矩,pip 安装


pip install pysnooper


然后就是等待着安装。


其它安装方式,直接看这两篇:



安装完成,就是这样



2.3 示例


代码示例


# -*- coding:utf-8 -*-
# @Time   : 2023-03-28
# @Author : Carl_DJ
'''
实现功能:
    使用PySnooper与with的上下文形式调试
'''
import pysnooper
import random
def Demo():
    #设置list
    list = []
    for i in range(10):
        list.append(random.randrange(1,1000))
    #使用with进行上下文调试
    with pysnooper.snoop():
        lower = min(list)
        upper = max(list)
        mid = (lower + upper) / 2
        print(lower,mid,upper)
#调用demo
if __name__ == '__main__':
    Demo()





运行结果


21 458.0 895
Source path:... D:\Project\TestPySnooper.py
New var:....... list = [438, 414, 895, 834, 890, 464, 21, 536, 290, 85]
New var:....... i = 9
15:14:58.320034 line        19         lower = min(list)
New var:....... lower = 21
15:14:58.320540 line        20         upper = max(list)
New var:....... upper = 895
15:14:58.320540 line        21         mid = (lower + upper) / 2
New var:....... mid = 458.0
15:14:58.320540 line        23         print(lower,mid,upper)
Elapsed time: 00:00:00.000506
Process finished with exit code 0



3、总结


看到这里,今天的分享内容就到这里了。

其实在实际工作中, 使用上下文调试的场景也很常见。

所以,学会使用PySnooper的with进行上下文调试, 能帮助你节省很多工作量。


好了,就唠叨这里了。

我是小鱼:


  • CSDN 博客专家;
  • 阿里云 专家博主;
  • 51CTO博客专家;
  • 51认证讲师;
  • 金牌面试官;


关注小鱼,带你学习更多更有趣的python知识。


当然,


如果你想晋升自己的技能,;

如果你想提升自己的面试成功率;

如果你现在处在职业迷茫期,想重新规划职业生涯;

都可以找小鱼聊聊的。



版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
一个python小测试引发的思考---python-list尽可能少用一些,程序复杂的话,可能出bug
一个python小测试引发的思考---python-list尽可能少用一些,程序复杂的话,可能出bug
74 0
如何解决 在vscode中运行python代码在无法print中文的问题
如何解决 在vscode中运行python代码在无法print中文的问题
165 0
Python(10)错误、调试、测试(上)
Python(10)错误、调试、测试(上)
63 0
Python(10)错误、调试、测试(下)
Python(10)错误、调试、测试(下)
77 0
Python3:只用一个装饰器,就让python的运行速度提升200倍!!
Python3:只用一个装饰器,就让python的运行速度提升200倍!!
30484 0
Python 为什么会有个奇怪的“...”对象?
... 是 Python 3 中的一个内置常量,它是一个单例对象,虽然是 Python 2 中就有的 Ellipsis 的别称,但它的性质已经跟旧对象分道扬镳 ... 可以替代 pass 语句作为占位符使用,但是它作为一个常量对象,在占位符语义上并不严谨。很多人已经在习惯上接受它了,不妨一用 ... 在 Python 中不少的使用场景,除了占位符用法,还可以支持扩展切片语法、丰富 Type Hint 类型检查,以及表示容器对象的无限循环 ... 对大多数人来说,可能并不多见(有人还可能因为它是一种符号特例而排斥它),但它的存在,有些时候能够带来便利。希望本文能让更多人认识它,那么文章的目的也就
87 0
Python零基础:第一个Python程序“hello world“ 背后的运行你懂了吗?
Python零基础:第一个Python程序“hello world“ 背后的运行你懂了吗?
137 0
一日一技:多个Python项目怎么调用我自己的工具函数?
一日一技:多个Python项目怎么调用我自己的工具函数?
217 0
你真的会调试你的python程序吗?
你真的会调试你的python程序吗?
65 0
【错误记录】PyCharm 运行 Python 程序报错 ( PEP 8: W292 no newline at end of file )
【错误记录】PyCharm 运行 Python 程序报错 ( PEP 8: W292 no newline at end of file )
736 0
+关注
Carl_奕然
CSDN博客专家,51CTO博主专家,51认证讲师/签约作者,华为云专家,资深测试开发专家,金牌面试官,职场面试培训及规划师。
文章
问答
视频
文章排行榜
最热
最新
相关电子书
更多
Python第五讲——关于爬虫如何做js逆向的思路
立即下载
低代码开发师(初级)实战教程
立即下载
阿里巴巴DevOps 最佳实践手册
立即下载
相关实验场景
更多