一、简介

调试程序时,很多人喜欢直接用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. KdTree && Octree 原理学习对比以及可视化分析--"索引树"

    1. Kdtree 原理 k-d树(k-dimensional树的简称),是一种分割k维数据空间的数据结构.主要应用于多维空间关键数据的搜索(如:范围搜索和最近邻搜索): 索引结构中相似性查询有两种基 ...

  2. Java编程思想:File类list()方法

    import java.util.regex.Pattern; import java.io.File; import java.io.FilenameFilter; public class Tes ...

  3. 【并查集】连接格点-C++

    连接格点 描述 有一个M行N列的点阵,相邻两点可以相连.一条纵向的连线花费一个单位,一条横向的连线花费两个单位.某些点之间已经有连线了,试问至少还需要花费多少个单位才能使所有的点全部连通. 输入 第一 ...

  4. 【Download error:TOO MANY REQUESTS】&【TypeError:excepted string or buffer】

    <用python写网络爬虫>,1.4.4链接爬虫,运行时,遇到错误: Download error:TOO MANY REQUESTS Traceback(most recent call ...

  5. Spring Boot2(十四):单文件上传/下载,文件批量上传

    文件上传和下载在项目中经常用到,这里主要学习SpringBoot完成单个文件上传/下载,批量文件上传的场景应用.结合mysql数据库.jpa数据层操作.thymeleaf页面模板. 一.准备 添加ma ...

  6. [PTA] 数据结构与算法题目集 6-12 二叉搜索树的操作集

    唯一比较需要思考的删除操作: 被删除节点有三种情况: 1.叶节点,直接删除 2.只有一个子节点,将子节点替换为该节点,删除该节点. 3.有两个子节点,从右分支中找到最小节点,将其值赋给被删除节点的位置 ...

  7. [leetcode] 7. Reverse Integer (easy)

    原题 水题 唯一注意的点就是数字溢出 class Solution { public: int reverse(int x) { long long MAX = ((long long)1 <& ...

  8. java高并发系列 - 第17天:JUC中的循环栅栏CyclicBarrier常见的6种使用场景及代码示例

    这是java高并发系列第17篇. 本文主要内容: 介绍CyclicBarrier 6个示例介绍CyclicBarrier的使用 对比CyclicBarrier和CountDownLatch Cycli ...

  9. JDK(Windows)

    百度云:链接:http://pan.baidu.com/s/1dEEsIUd     密码:15cn 官网下载网址:http://www.oracle.com/technetwork/java/jav ...

  10. Flutter学习笔记(11)--文本组件、图标及按钮组件

    如需转载,请注明出处:Flutter学习笔记(10)--容器组件.图片组件 文本组件 文本组件(text)负责显示文本和定义显示样式,下表为text常见属性 Text组件属性及描述 属性名 类型 默认 ...