一、简介

调试程序时,很多人喜欢直接用print来代替断点调试,而pysnooper模块比print更方便,以装饰器的形式存在

二、实验环境

  操作系统:win10

  python版本:python3.6

三、安装pysnooper模块

  pip3 install pysnooper

四、简单实例

  需求:屏幕打印每个变量的值

import pysnooper

@pysnooper.snoop()
def test():
a = 100*1
sum=0
for i in range(10):
sum +=i
sum2 = sum +a
return sum2 if __name__ == '__main__':
test()

  结果输出:

17:07:38.982924 call         4 def test():
17:07:38.982924 line 5 a = 100*1
New var:....... a = 100
17:07:38.982924 line 6 sum=0
New var:....... sum = 0
17:07:38.982924 line 7 for i in range(10):
New var:....... i = 0
17:07:38.982924 line 8 sum +=i
17:07:38.982924 line 7 for i in range(10):
Modified var:.. i = 1
17:07:38.982924 line 8 sum +=i
Modified var:.. sum = 1
17:07:38.983889 line 7 for i in range(10):
Modified var:.. i = 2
17:07:38.983889 line 8 sum +=i
Modified var:.. sum = 3
17:07:38.983889 line 7 for i in range(10):
Modified var:.. i = 3
17:07:38.983889 line 8 sum +=i
Modified var:.. sum = 6
17:07:38.983889 line 7 for i in range(10):
Modified var:.. i = 4
17:07:38.983889 line 8 sum +=i
Modified var:.. sum = 10
17:07:38.983889 line 7 for i in range(10):
Modified var:.. i = 5
17:07:38.983889 line 8 sum +=i
Modified var:.. sum = 15
17:07:38.983889 line 7 for i in range(10):
Modified var:.. i = 6
17:07:38.983889 line 8 sum +=i
Modified var:.. sum = 21
17:07:38.983889 line 7 for i in range(10):
Modified var:.. i = 7
17:07:38.983889 line 8 sum +=i
Modified var:.. sum = 28
17:07:38.983889 line 7 for i in range(10):
Modified var:.. i = 8
17:07:38.983889 line 8 sum +=i
Modified var:.. sum = 36
17:07:38.983889 line 7 for i in range(10):
Modified var:.. i = 9
17:07:38.983889 line 8 sum +=i
Modified var:.. sum = 45
17:07:38.983889 line 7 for i in range(10):
17:07:38.983889 line 9 sum2 = sum +a
New var:....... sum2 = 145
17:07:38.983889 line 10 return sum2
17:07:38.983889 return 10 return sum2
Return value:.. 145

结果

五、pysnooper.snoop传参介绍

output='a.txt'        #将结果保存到文件a.txt
variables=('a') #打印非局部变量a的值
depth=1 #Show snoop lines for functions that your function calls
prefix='hello' #在每一行打印信息前添加hello

Python模块之pysnooper的更多相关文章

  1. 使用C/C++写Python模块

    最近看开源项目时学习了一下用C/C++写python模块,顺便把学习进行一下总结,废话少说直接开始: 环境:windows.python2.78.VS2010或MingW 1 创建VC工程 (1) 打 ...

  2. Python模块之configpraser

    Python模块之configpraser   一. configpraser简介 用于处理特定格式的文件,其本质还是利用open来操作文件. 配置文件的格式: 使用"[]"内包含 ...

  3. Python模块之"prettytable"

    Python模块之"prettytable" 摘要: Python通过prettytable模块可以将输出内容如表格方式整齐的输出.(对于用Python操作数据库会经常用到) 1. ...

  4. python 学习第五天,python模块

    一,Python的模块导入 1,在写python的模块导入之前,先来讲一些Python中的概念性的问题 (1)模块:用来从逻辑上组织Python代码(变量,函数,类,逻辑:实现一个功能),本质是.py ...

  5. windows下安装python模块

    如何在windows下安装python模块 1. 官网下载安装包,比如(pip : https://pypi.python.org/pypi/pip#downloads) pip-9.0.1.tar. ...

  6. 安装第三方Python模块,增加InfoPi的健壮性

    这3个第三方Python模块是可选的,不安装的话InfoPi也可以运行. 但是如果安装了,会增加InfoPi的健壮性. 目录 1.cchardet    自动检测文本编码 2.lxml    用于解析 ...

  7. Python基础篇【第5篇】: Python模块基础(一)

    模块 简介 在计算机程序的开发过程中,随着程序代码越写越多,在一个文件里代码就会越来越长,越来越不容易维护. 为了编写可维护的代码,我们把很多函数分组,分别放到不同的文件里,这样,每个文件包含的代码就 ...

  8. python 模块加载

    python 模块加载 本文主要介绍python模块加载的过程. module的组成 所有的module都是由对象和对象之间的关系组成. type和object python中所有的东西都是对象,分为 ...

  9. pycharm安装python模块

    这个工具真的好好,真的很喜欢,它很方便,很漂亮,各种好 pycharm安装python模块:file-setting-搜索project inte OK

随机推荐

  1. Oracle粗心大意总结篇

    有时候写sql语句不细心的话,很容易犯大错误,导致你纠结好久,找不到原因,慢慢总结: 错误1: SELECT * FROM( SELECT USER.*, ROWNUM AS CON FROM USE ...

  2. 万字长文:ELK(V7)部署与架构分析

    ELK(7版本)部署与架构分析 1.ELK的背景介绍与应用场景 在项目应用运行的过程中,往往会产生大量的日志,我们往往需要根据日志来定位分析我们的服务器项目运行情况与BUG产生位置.一般情况下直接在日 ...

  3. Excel催化剂开源第51波-Excel催化剂遍历单元格操作性能保障

    在Excel催化剂推出的这一年多时间里,经常性听到一种声音,大概意思是真正会写代码的人,都不会看上Excel催化剂写出来的功能,自己造一个更舒服贴心,仿佛会一点VBA就可以天下无敌一般,也好像Exce ...

  4. 个人永久性免费-Excel催化剂功能第73波-数据转换:单行多项目转多行单项目

    数据分析的前半部分数据处理.转换等工作是一个又脏又累的活,默默地干着,却又不出彩让人看到过程的艰辛和成果.如何让这个过程可以更加轻松一点,是Excel催化剂为大家所想的,今天带来一大刚需的数据转换功能 ...

  5. MYSQL数据库数据类型

    07.14自我总结 MYSQL数据库数据类型 一.整数类型和浮点数典型 1.有符号/没符号 对于整数和负整数来说,默认情况下是有符号范围的 默认是有符号 有符号和没符号其实就是有没有包括负数,有符号是 ...

  6. C#中面向对象编程中的函数式编程详解

    介绍 使用函数式编程来丰富面向对象编程的想法是陈旧的.将函数编程功能添加到面向对象的语言中会带来面向对象编程设计的好处. 一些旧的和不太老的语言,具有函数式编程和面向对象的编程: 例如,Smallta ...

  7. Git学习(一):版本控制介绍及安装

    一.VCS(版本控制系统)的演变 1.集中式VCS的特点 1)有集中的版本管理服务器: 2)具备文件版本管理和分支管理能力: 3)集成效率较没有版本控制(如:进行文件夹标注的方式)有明显地的提高: 4 ...

  8. opencv编译

    1. clone源码 https://github.com/opencv/opencv 2. 安装cmake 3. cmake配置的时候,输出目录需要另外设置一个目录,不可以放到源码目录 4. 用cm ...

  9. Java集合 HashSet的原理及常用方法

    目录 一. HashSet概述 二. HashSet构造 三. add方法 四. remove方法 五. 遍历 六. 合计合计 先看一下LinkedHashSet 在看一下TreeSet 七. 总结 ...

  10. rabbitMQ_helloworld(一)

    在下图中,“P”是我们的生产者,“C”是我们的消费者.中间的框是队列 - RabbitMQ代表消费者的消息缓冲区. 本例使用maven构建项目,在pom.xml中添加一下依赖 <dependen ...