【Python调试】Python中调试模块

本文介绍了Python的两个调试工具,icecream和pysnooper。icecream提供了一种优雅的方式来输出变量和函数值,支持自定义前缀和输出位置。pysnooper则是非侵入式的调试方式,详细记录函数执行过程,包括变量变化、函数调用和执行时间。此外,pysnooper还支持日志输出、线程调试和自定义对象格式。这两个工具极大地提升了Python代码的调试效率。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1.icecream简介

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

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

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Zy5jD28U-1616489059061)(https://i.loli.net/2021/03/23/R2DJ8cIiVSn6QbC.png)]

1.1安装

pip install icecream

1.2导入模块包

from icecream import ic

1.3调试
  • 调试变量
from icecream import ic

a = "测试"
b = 123
ic(a)
ic(b)

ic| a: ‘测试’
ic| b: 123

  • 调试函数
from icecream import ic


def test01(a: int, b: int):
    return max(a, b)


ic(test01(5, 81))

ic| test01(5, 81): 81

  • 如果你想要找到执行代码的位置
def hello(user):
    if user:
        ic()
    else:
        ic()


ic(hello("heel"))

ic| icecream_lianx.py:19 in hello() at 05:51:43.987
ic| hello(“heel”): None

  • 自定义输出前缀
from icecream import ic
import time
from datetime import datetime


def time_format():
    return f'{datetime.now().strftime("%Y-%m-%d %H:%M:%S")}|> '

# 通过设置ic对象中的 configureOutput 函数中的prefix参数,将prefix设置为自己定义的函数即可
ic.configureOutput(prefix=time_format)

for _ in range(3):
    time.sleep(1)
    ic('Hello')

2021-03-23 13:54:59|> ‘Hello’
2021-03-23 13:55:00|> ‘Hello’
2021-03-23 13:55:01|> ‘Hello’

  • 执行代码所在的行或者是代码所在的文件
from icecream import ic


def my_func(string):
    return string + "学习Python"


ic.configureOutput(includeContext=True)
ic(my_func("测试"))

2021-03-23 14:00:05|> icecream_lianx.py:29 in
my_func(“测试”): ‘测试学习Python’

2.icecream源码解释

1.icecream的参数
def configureOutput(self, prefix=_absent, outputFunction=_absent,
                    argToStringFunction=_absent, includeContext=_absent):
  • prefix :输出的前缀,比如需要在控制台中输出执行的日期,需要编写一个日期格式的方法/变量接受,然后使用ic.configureOutput(prefix=所定义的变量)
  • outputFunction:修改输出函数
# 例1
def fun1(a):
    a = fun2(a)
    print
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值