初试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的时候,看到了其中的异步编程,由于自己之前没有接触过, ...
随机推荐
- websocket(一)--握手
最近在琢磨怎么实现服务端的消息推送,因为以前都是通过客户端请求来获取信息的,如果需要实时信息就得轮询,比如通过ajax不停的请求. websocket相当于对HTTP协议进行了升级,客户端和服务端通过 ...
- 关于JQuery的技巧、易错点(连载中.....)
JQuery的诞生让我们对原生态的js代码变得陌生起来,不得不说,他真的是很强大,接下来博主就浅谈一下我对JQuery的一些认知和小tips. JQuery:他是一个JavaScript库,他将原生态 ...
- python下如何安装.whl包?
下载 .whl 包 先 pip install wheel 之后 pip install 包名字.whl 即可安装某模块包
- Java 读书笔记 (六) 引用类型
Java里使用long类型的数据要在数值后面加上L,否则会作为整型解析. 引用类型 引用类型是一个对象类型,它的值是指向内存空间的引用,就是地址, 所指向的内存中保存着变量所表示的一个值或一组值. i ...
- BZOJ_2738_矩阵乘法_整体二分
BZOJ_2738_矩阵乘法_整体二分 Description 给你一个N*N的矩阵,不用算矩阵乘法,但是每次询问一个子矩形的第K小数. Input 第一行两个数N,Q,表示矩阵大小和询问组数: 接下 ...
- BZOJ_2073_[POI2004]PRZ_状压DP
BZOJ_2073_[POI2004]PRZ_状压DP 题意: 一只队伍在爬山时碰到了雪崩,他们在逃跑时遇到了一座桥,他们要尽快的过桥. 桥已经很旧了, 所以它不能承受太重的东西. 任何时候队伍在桥上 ...
- Python的list用法笔记
今天做leetcode的str反转,学到了不少python的用法,这里做个笔记: str和list互相转换 str转list >>> a='apple' >>> l ...
- TensorFlow TensorBoard使用
摘要: 1.代码例子 2.主要功能内容: 1.代码例子 <TensorFlow实战>使用MLP处理Mnist数据集并TensorBoard上显示 2.主要功能 执行TensorBoard程 ...
- 移动通信最先进的音频编解码器EVS及用好要做的工作
语音通信从最初的只有有线通信变成后来的有线通信与无线通信(移动通信)的竞争,当移动语音通信价格下来后有线语音通信明显处于逆势.如今移动语音通信的竞争对手是OTT(On The Top)语音,OTT语音 ...
- 前端随笔 - JavaScript中的闭包
前阵子重新复习了一下js基础知识,第一篇博客就以分享闭包心得为开始吧. 首先,要理解闭包,就必须要了解一个概念:作用域链. 作用域链 作用域代表着可访问变量的集合,变量分为全局变量和局部变量两种,在函 ...