使用可变延迟/ Python打印函数调用

时间:2009-12-04 14:11:59

标签: python console debugging

问题是,如何配置Python调试器以在控制台中向我显示正在调用的函数?

为了不看一切闪现,需要在函数调用之间延迟。

2 个答案:

答案 0 :(得分:2)

如果要监视何时调用某些特定功能, 你可以使用这个装饰器:

import functools
def trace(f):
    @functools.wraps(f)
    def wrapper(*arg,**kw):
        '''This decorator shows how the function was called'''
        arg_str=','.join(['%r'%a for a in arg]+['%s=%s'%(key,kw[key]) for key in kw])
        print "%s(%s)" % (f.__name__, arg_str)
        return f(*arg, **kw)
    return wrapper

您可以这样使用它:

@trace          # <--- decorator your functions with the @trace decorator
def foo(x,y):
    # do stuff

当你运行程序时,每次调用foo(x,y)时,你都会看到 函数调用在控制台中使用其参数的值:

foo(y=(0, 1, 2),x=(0, 0, 0))

答案 1 :(得分:1)

您可以使用备用pydb调试程序。您可以使用pydb --fntrace --batch <scriptname>调用它来获取函数跟踪。

对于“闪烁”,在ANSI终端上使用常用工具,如Ctrl-S / Ctrl-Q,或重定向到文件。