初试PySnooper
Pysooper是什么?
我们写代码会经常出现bug,有的人会使用断点调试器,但是设置这样的断点调试器是花时间的。
所以很多人会在可能出现错误的地方print打印来输出语句。
Pysooper的作用有点类似,你不必小心谨慎的使用print语句,只需要在想要调试的函数中引入一个装饰器。就可以得到函数的详细日志,包括运行了那些行,何时运行,以及何时更改了局部变量。
使用示例
写一个函数,将数字转换为二进制
import pysnooper @pysnooper.snoop()
def num_to_bits(number):
if number:
bits = []
while number:
# 一个数除以2, 商和余数
number, remainder = divmod(number, 2)
# 将余数放到列表的开始位,也就是0位
bits.insert(0, remainder)
return bits
else:
return [0] num_to_bits(6)
可以看下它的运行:
# 开始
Starting var:.. number = 6
17:35:13.264157 call 4 def num_to_bits(number):
17:35:13.264157 line 5 if number:
17:35:13.264157 line 6 bits = []
New var:....... bits = []
17:35:13.265157 line 7 while number:
17:35:13.265157 line 8 number, remainder = divmod(number, 2)
# 第一次值变化
New var:....... remainder = 0
Modified var:.. number = 3
17:35:13.265157 line 9 bits.insert(0, remainder)
Modified var:.. bits = [0]
17:35:13.265157 line 7 while number:
17:35:13.265157 line 8 number, remainder = divmod(number, 2)
# 第二次值变化
Modified var:.. number = 1
Modified var:.. remainder = 1
17:35:13.265157 line 9 bits.insert(0, remainder)
Modified var:.. bits = [1, 0]
17:35:13.265157 line 7 while number:
17:35:13.265157 line 8 number, remainder = divmod(number, 2)
#第三次值变化
Modified var:.. number = 0
17:35:13.265157 line 9 bits.insert(0, remainder)
Modified var:.. bits = [1, 1, 0]
17:35:13.265157 line 7 while number:
# 跳出循环
17:35:13.265157 line 10 return bits
17:35:13.265157 return 10 return bits
# 得到终值
Return value:.. [1, 1, 0]
又学到了一种调试的方法。
初试PySnooper的更多相关文章
- caffe初试(一)happynear的caffe-windows版本的配置及遇到的问题
之前已经配置过一次caffe环境了: Caffe初试(一)win7_64bit+VS2013+Opencv2.4.10+CUDA6.5配置Caffe环境 但其中也提到,编译时,用到了cuda6.5,但 ...
- 初试Nodejs——使用keystonejs创建博客网站2(修改模板)
上一篇(初试Nodejs——使用keystonejs创建博客网站1(安装keystonejs))讲了keystonejs的安装.安装完成后,已经具备了基本的功能,我们需要对页面进行初步修改,比如,增加 ...
- 项目中初试PHP单元测试
只能叫初试,前面虽然做了一些PHPUnit与团队所用框架的整合,但在整个团队还没有人可以主动推动这个事情,而作为Leader最重要的一种能力应该是"让正确的事情发生",所以今天开始 ...
- VPS -Digital Ocean -初试以及VPN的搭建
首先恭喜你找到这篇博客,它会带你走出困境. 题外话(请忽略):一直以来想搞一个VPS,终于在自己的刺激下试了一下Digital Ocean,还没有使用很长时间不做太多评论,唯一给我的感觉是各种操作还算 ...
- 初试微信小程序
2016年11月3日,微信小程序终于公测了,大家可以正式开发了.早在这之前,应公司要求,和同事就早早的试了一下微信小程序的开发,特此记录一下: 微信官方小程序文档:https://mp.weixin. ...
- Win7+VS2013初试Thrift
win7环境下VS2013编译boost_1_58_0步骤: 官网下载boost_1_58_0(直接下载),解压 cmd窗口cd到boost_1_58_0,执行bootstrap.bat cmd窗口获 ...
- java web分页查询初试
ssh2分页查询初试,放着记录学习一下. entity:student.java: package com.zte.entity; /** * 数据持久化,跟数据库的的相应的表的字段是对应的. * * ...
- Windows Phone开发(2):竖立自信,初试锋茫
原文:Windows Phone开发(2):竖立自信,初试锋茫 上一篇文章中,我们聊了一些"大炮"话题,从这篇文章开始,我们一起来学习WP开发吧. 一.我们有哪些装备. 安装完VS ...
- .Net 4.5 异步编程初试(async和await)
.Net 4.5 异步编程初试(async和await) 前言 最近自己在研究Asp.Net Web API.在看到通过客户端来调用Web API的时候,看到了其中的异步编程,由于自己之前没有接触过, ...
随机推荐
- bootstrap学习地址2017.6.1
http://www.runoob.com/bootstrap/bootstrap-tutorial.html
- border-radius 圆角
border-radius:3px; 参数的单位可以使绝对的像素px,也可以用相对单位%; 参数顺序是左上角,右上角,右下角,左下角. 圆角: div{width: 100px;height: 10 ...
- 在Windows Server 2008 R2下搭建jsp环境(四)-在测试的过程中可能出现的问题
环境基本部署好了之后,便开始测试,一定要让他经得起"考验",他才会值得你的信赖.Tomcat服务器部署成功的的验证方法(默认端口的情况下): 1.loacalhost:8080 2 ...
- version.go
package blog4go const ( // 版本号 VERSION = "0.5.6" )
- 随手一记,maven打包
<plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-depen ...
- C++类中静态变量和普通变量的区别
静态变量: 1.静态变量会被编到程序的exe里面,从程序启动到结束,它一直存在: 2.静态变量的初始化值为0: 3.全局变量默认是静态变量: 4.在类中的函数变量前面加了static的也是静态变量,只 ...
- 第十三章——卷积神经网络(CNN)
卷积神经网络(Convolutional neural networks,CNNs)来源于对大脑视觉皮层的研究,并于1980s开始应用于图像识别.现如今CNN已经在复杂的视觉任务中取得了巨大成功,比如 ...
- 使用jdbc拼接条件查询语句时如何防止sql注入
本人微信公众号,欢迎扫码关注! 使用jdbc拼接条件查询语句时如何防止sql注入 最近公司的项目在上线时需要进行安全扫描,但是有几个项目中含有部分老代码,操作数据库时使用的是jdbc,并且竟然好多都是 ...
- Docker 配置国内镜像加速器,加速下载速度
文章首发自个人微信公众号:小哈学Java 个人网站地址:https://www.exception.site/docker/docker-configuration-of-mirror-acceler ...
- django+mysql的使用
Django中每一个模型model都对应于数据库中的一张表,每个模型中的字段都对应于数据库表的列.方便的是,django可以自动生成这些create table, alter table, drop ...