代替print输出的PY调试库:PySnooper

PySnooper¶

Github:https://github.com/lotapp/PySnooper

pip install pysnooper

使用:分析整个代码

@pysnooper.snoop()
def avg(args):
    return sum(args) / len(args)

PS:调试代码片段

with pysnooper.snoop():
    code

In [1]:

import functools
import pysnooper

# 分析整个代码
@pysnooper.snoop()
def sum(args):
    return functools.reduce(lambda x, y: x + y, args)

def avg(args):
    # return sum(args) / len(args)
    sum_num = sum(args)
    # 分析片段代码
    with pysnooper.snoop():
        avg_num = sum_num / len(args)
    return avg_num

In [2]:

# 求和
sum(list(range(1, 101)))
Starting var:.. args = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, ... 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100]
12:21:19.846556 call         6 def sum(args):
12:21:19.847553 line         7     return functools.reduce(lambda x, y: x + y, args)
12:21:19.847553 return       7     return functools.reduce(lambda x, y: x + y, args)
Return value:.. 5050

Out[2]:

5050

In [3]:

# 平均值
avg(list(range(1, 101)))
Starting var:.. args = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, ... 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100]
12:21:19.940523 call         6 def sum(args):
12:21:19.941526 line         7     return functools.reduce(lambda x, y: x + y, args)
12:21:19.941526 return       7     return functools.reduce(lambda x, y: x + y, args)
Return value:.. 5050
New var:....... args = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, ... 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100]
New var:....... sum_num = 5050
12:21:19.942524 line        14         avg_num = sum_num / len(args)

Out[3]:

50.5

原文地址:https://www.cnblogs.com/dotnetcrazy/p/10848257.html

时间: 2024-11-09 01:51:03

代替print输出的PY调试库:PySnooper的相关文章

快速掌握Lua 5.3 —— 调试库 (1)

Q:什么是活动函数? A:程序中被调用但还未执行完成的函数. function g() --[[ 此时函数"g"被调用但还未执行完成,是活动函数.所以这里获取的是函数"g"的信息. "debug.getinfo(2)"获取的才是函数"f"的信息.]] local x = debug.getinfo(1, "n") for k, v in pairs(x) do print(k, v) end end fun

py标准库之atexit 程序关闭回调

# -*- coding: utf-8 -*-# 作者:新手__author__ = 'Administrator'#py标准库之atexit 程序关闭回调import atexit#用于在注册程序正常关闭时调用函数,sys模块还提供了一个hook,sys.exitfunc, 不过这里只能注册一个函数,aatexit注册表有多个模块和库同时使用#例子1:通过 register()注册一个函数def all_done():    print 'all_done()' print 'register

Python的print输出中文对齐问题

问题描述: 在使用Python的内建函数print作英文输出时,应用格式化输出可以对齐得很好: s1 = 'I am a long sentence.' s2 = 'I\'m short.' print '%-30s%-20s' %(s1,s2) #'%-30s' 含义是 左对齐,且占用30个字符位 print '%-30s%-20s' %(s2,s1) 输出: 注: 这里应用了最原始的cmd控制台,一些IDE自带的控制台(如Sublime text)可能会有不同的输出效果. 但当字符串包含中文

【python】禁止print输出换行的方法

print后用一个逗号结尾就可以禁止输出换行,例子如下 >>> i=0 >>> while i < 3: print i i+=1 0 1 2 禁止输出换行后效果如下: >>> i=0 >>> while i < 3: print i, i+=1 0 1 2 [python]禁止print输出换行的方法,布布扣,bubuko.com

YUV422蓝屏显示输出功能辅助调试

YUV422有YUYV,YVYU,UYVY,VYUY四种,以下笔者就就以UYVY为例介绍一下数据构成.因为常常要跟视频输入打交道,所以YUV422这种常见的视频信号是常常碰到的.有时候我们调试一个模块输出YUV422,然后再显示出来.非常多时候,可能没法准确推断你那个模块是不是已经正常跑起来了,跑起来来的情况下,是不是真的有数据输出,有了数据输出后来的数据究竟对不正确. 带着这些疑问,当然有非常多对策,笔者就先把这个事情一分为二,以YUV422数据为界限分两部分,假设怀疑是模块没有输出YUV42

python print输出unicode字符

命令行提示符下,python print输出unicode字符时出现以下 UnicodeEncodeError: 'gbk' codec can't encode character '\u30fb 不能输出 unicode 字符,程序中断. 解决方法: sys.stdout = io.TextIOWrapper(sys.stdout.buffer, errors = 'replace', line_buffering = True) python print输出unicode字符,布布扣,bu

ubuntu 调试库

1.安装带有调试信息的libc: sudo apt-get install libc6-dbg 2.下载libc源码 a.选定一个放置源码的目录并进入,如 /home/kent/dev-os/libc6-source b.执行sudo apt-get source libc6, 会把源码下载到当前目录中. 最后源码目录大概是:/home/kent/dev-os/libc6-source/eglibc-2.15 www.2cto.com 3.运行gdb时指定libc源码目录:gdb `find /

Python:print输出中文

python3 print输出unicode字符时出现以下错误: UnicodeEncodeError: 'gbk' codec can't encode character '\u30fb 解决方法: sys.stdout = io.TextIOWrapper(sys.stdout.buffer, errors = 'replace', line_buffering = True) Python:print输出中文

还在使用print输出日志吗?

PySnooper hello,小伙们大家好,今天是给大家分享的开源项目是帮助Python开发者的debug工具,如果您正在尝试弄清楚为什么您的Python代码没有按照您认为的那样做.您可能希望使用具有断点和监视功能的成熟调试器,但现在不必为设置一个调试器而烦恼. 您想知道哪些行正在运行,哪些不在,以及局部变量的值是什么. 大多数人会print在战略位置使用线条,其中一些线条显示变量的值. PySnooper允许您执行相同的操作,除了print只需要在感兴趣的函数中添加一条装饰器行,而不是精心制