【Python】推荐比print更好用的调试方法


💝💝💝欢迎莅临我的博客,很高兴能够在这里和您见面!希望您在这里可以感受到一份轻松愉快的氛围,不仅可以获得有趣的内容和知识,也可以畅所欲言、分享您的想法和见解。


Hey,亲爱的编程小伙伴们!今天,我要和你们聊聊一个超级实用的 Python 调试神器------"Ice Cream"库。你是否还在用老旧的 print() 函数来调试代码?如果你的回答是肯定的,那么,你可能已经 Out 了!😉

在编程的世界里,print() 函数就像我们的老朋友,总是在那里,随时准备帮助我们输出信息。但是,你有没有想过,除了 print(),还有没有更酷、更高效的调试方式呢?

举个栗子

想象一下,你定义了一个函数,想要验证它是否按照预期工作。你可能会像这样:

python 复制代码
def square_of(num):
    return num * num

print(square_of(2))
print(square_of(3))
print(square_of(4))

看起来还不错,对吧?但当代码量增加,多个 print() 函数同时工作时,你可能就会开始头疼了。输出太多,你可能会搞不清楚哪个输出对应哪个函数调用。

安装 Ice Cream

好消息是,有一个名为 Ice Cream 的第三方库,可以解决这个问题。首先,你需要通过 pip 安装它:

bash 复制代码
pip install icecream

然后,导入这个库:

python 复制代码
from icecream import ic

函数调用

现在,让我们看看 ic() 函数如何简化我们的调试过程:

python 复制代码
ic(square_of(2))
ic(square_of(3))
ic(square_of(4))

看!ic() 自动输出了函数名称、参数和结果,无需我们手动添加任何说明。

访问字典

Ice Cream 不仅适用于函数调用,它还能输出任何有助于调试的信息,比如字典的键值对:

python 复制代码
from icecream import ic
my_dict = {'name': 'Chris', 'age': 33}
ic(my_dict['name'])

输出结果清晰地显示了字典的变量名和键值。

访问对象属性

再来看看对象属性的访问:

python 复制代码
class Dog():
    num_legs = 4
    tail = True

dog = Dog()
ic(dog.tail)

输出结果告诉我们 dog.tail 的值。

在条件语句中使用

Ice Cream甚至可以在条件语句中使用,帮助我们理解代码的执行流程:

python 复制代码
input = 'Chris'
if input == 'Chris':
    ic()
else:
    ic()

插入现有代码

最棒的是,ic() 函数不会影响代码的执行,你可以在任何地方使用它,就像这样:

python 复制代码
num = 2
square_of_num = square_of(ic(num))

功能禁用

当调试完成后,你只需一行代码就可以禁用Ice Cream的所有输出:

python 复制代码
ic.disable()

所有 ic() 函数调用将不再输出任何内容,让你的代码保持干净整洁。

总结

Ice Cream是一个增强版的 print(),它为 Python 调试提供了详细的输出,让调试变得异常方便。它不会取代 print() 或日志系统,但它绝对是你日常工作学习中的好帮手。试试看,你会发现新世界的!


🔥🔥🔥道阻且长,行则将至,让我们一起加油吧!🌙🌙🌙

|---------------------------|
| 💖The End💖点点关注,收藏不迷路💖 |

阅读原文:https://mp.weixin.qq.com/s/00Xjtc8td1xPPX8XrVGyxA

往期文章合集:https://stormsha.blog.csdn.net/article/details/139203741

相关推荐
Scott9999HH1 小时前
【IIoT流量实战】蒸汽管道阀门全关却仍有流量?用 Python 实现涡街信号 FFT 频谱分析与温压全补偿积算网关,深度拆解靠谱的涡街流量计厂家硬核技术标准
开发语言·python
码智社2 小时前
AES加密原理详解及Java实现加解密实战
java·开发语言
AI云海2 小时前
python 列表、元组、集合和字典
开发语言·python
二十雨辰3 小时前
[爬虫]-Urllib
爬虫·python
萧瑟余晖3 小时前
JDK 26 新特性详解
java·开发语言
马优晨4 小时前
Freemarker 完整讲解(后端 Java 模板引擎)
java·开发语言·freemarker·freemarker 完整讲解·freemarker模板引擎
玉鸯5 小时前
Agent Hook:在概率推理之上,为 Agent 叠加确定性控制
python·langchain·agent
weixin_446260855 小时前
HACO:面向动态部署环境的对冲式智能计算可靠多智能体调度框架
后端·python·flask
我的xiaodoujiao6 小时前
API 接口自动化测试详细图文教程学习系列32--Allure测试报告2
python·学习·测试工具·pytest