Python 中取代 Printf 大法的工具
「printf 大法」大概是最早期学到的 debug 方式?不同语言有不同的指令,在 Python 里对应的是 print
指令 (加上%
或是.format
)。
刚刚看到「 cool-RR/pysnooper 」这个 Python 上的工具,只要增加 @pysnooper.snoop
这组 decorator,就可以自动帮你把变量的值打印出來。网站上的范例是这样,可以看到就只是加了一行 decorator:
import pysnooper
@pysnooper.snoop
def number_to_bits(number):
if number:
bits =
while number:
number, remainder = divmod(number, 2)
bits.insert(0, remainder)
return bits
else:
return [0]
number_to_bits(6)
然后对应的 stderr 就有满满的资讯可以看:
Starting var:.. number = 6
21:14:32.099769 call 3 @pysnooper.snoop
21:14:32.099769 line 5 if number:
21:14:32.099769 line 6 bits =
New var:....... bits =
21:14:32.099769 line 7 while number:
21:14:32.099769 line 8 number, remainder = divmod(number, 2)
New var:....... remainder = 0
Modified var:.. number = 3
21:14:32.099769 line 9 bits.insert(0, remainder)
Modified var:.. bits = [0]
21:14:32.099769 line 7 while number:
21:14:32.099769 line 8 number, remainder = divmod(number, 2)
Modified var:.. number = 1
Modified var:.. remainder = 1
21:14:32.099769 line 9 bits.insert(0, remainder)
Modified var:.. bits = [1, 0]
21:14:32.099769 line 7 while number:
21:14:32.099769 line 8 number, remainder = divmod(number, 2)
Modified var:.. number = 0
21:14:32.099769 line 9 bits.insert(0, remainder)
Modified var:.. bits = [1, 1, 0]
21:14:32.099769 line 7 while number:
21:14:32.099769 line 10 return bits
21:14:32.099769 return 10 return bits
另外还可以写到档案里里,可以指定允许的深度,或是直接指定要打印哪些变量。另外输出时,也可以指定 prefix 避免混淆(通常会用在 stderr,也只有 pysnooper 在输出时)
最新文章
- Dijkstra算法(三)之 Java详解
- Python教程[廖雪峰],主要是实践
- 清空KindEditor富文本编辑器里面的内容方法
- UVA 11021 C - Tribles(概率DP)
- 20145330《Java学习笔记》第一章课后练习8知识总结以及IDEA初次尝试
- 初学ExtJs 表格显示后台数据
- poj 1017 Packets 裸贪心
- Provider Communication with Apple Push Notification Service
- RT: np - new sbt project generation made simple(r)
- IOS 设备信息读取
- JSON-C结构简介、使用
- 添加可运行的js代码
- VBS虚拟键码
- [刷题]算法竞赛入门经典(第2版) 5-4/UVa10763 - Foreign Exchange
- Java URL类踩坑指南
- 2015多校联赛 ——HDU5288(数学)
- Linux 文件日志筛选操作
- HTTP中的Get与Post
- Directed Graph Loop detection and if not have, path to print all path.
- Sql Server 关于SET IDENTITY_INSERT的问题