一、简介

调试程序时,很多人喜欢直接用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. MyBatis select标签的用法

    From<MyBatis从入门到精通> 第一步,在接口中添加方法: public interface UserMapper { SysUser selectById(Long id); } ...

  2. Jenkins Ci系列目录

    Jenkins入门篇 1.Jenkins入门之界面概览 2.Jenkins入门之新建任务 3.Jenkins入门之导航操作 4.Jenkins入门之任务基本操作 5.Jenkins入门之执行Power ...

  3. [原创]Floodlight安装

    Floodlight安装:一.安装环境: ubuntu-12.04-64bit二.安装Floodlight: #apt-get update #apt-get install build-essent ...

  4. 利用openpyxl模块处理excel表格

    一.选取表格中的内容创建图表 1.openpyxl支持利用工作表中单元格的数据,创建条形图.折线图.散点图等.步骤如下: 1).从一个矩形区域选择的单元格,创建一个Reference对象. 2).通过 ...

  5. 自实现input上传指定文件到服务器

    遇到问题,解决问题,记录问题,成长就是一步一步走出来的. 一.添加 input 标签 我的工作中遇到了,需要上传pdf文件到服务器的需求,而且只能上传pdf文件,accept指定了 pdf 类型. & ...

  6. [PTA] 数据结构与算法题目集 6-10 二分查找

    Position BinarySearch(List L, ElementType X) { int beg = 1; int end = L->Last; while (beg <= e ...

  7. 2019杭电多校第一场hdu6581 Vacation

    Vacation 题目传送门 update(O(n)) 看了那个O(n)的方法,感觉自己想的那个O(nlogn)的好傻,awsl. 0车最终通过停车线的时候,状态一定是某个车堵住后面的所有车(这个车也 ...

  8. iOS中基于协议的路由设计

    一.背景 前段时间对我们自己的App做了结构上的重构,抛弃了之前简单的MVC开发模式,原因是随着App的业务线越来越多,单个页面的功能越来越复杂,MVC开发模式导致整个Controller-layer ...

  9. python课堂整理16---内置函数

    1. abs :求绝对值 print(abs(-1)) 2. all()传入一个可迭代对象,对该对象进行bool值运算,若都为True 就返回True,有一个为假,就返回False print(all ...

  10. JNDI总结(一)

    一.数据源的由来 在Java开发中,使用JDBC操作数据库的四个步骤如下:   ①加载数据库驱动程序(Class.forName("数据库驱动类");)   ②连接数据库(Conn ...