【问题标题】:Print function calls with a variable delay / Python打印具有可变延迟/ Python的函数调用
【发布时间】:2009-12-04 14:11:58
【问题描述】:

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

为了不让一切都一闪而过,函数调用之间需要延迟。

【问题讨论】:

    标签: python console debugging


    【解决方案1】:

    如果您想监控何时调用了一些特定的函数, 你可以使用这个装饰器:

    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))
    

    【讨论】:

    • 有趣的功能。你可以在哪些版本的 Python 中做到这一点?
    • 2.4 引入了装饰器,2.5 引入了 functools。有另一种方法可以编写不依赖于 functools 的跟踪装饰器:参见pypi.python.org/pypi/decorator#a-trace-decorator
    【解决方案2】:

    您可以使用替代的pydb 调试器。您可以使用pydb --fntrace --batch &lt;scriptname&gt; 调用它以获取函数跟踪。

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

    【讨论】:

    • 我认为这个调试器可以做 pdb 做不到的工作!我在 showmedo.com/videotutorials/... 找到了一个很好的教程。请参阅其中的“设置线路跟踪延迟 0.35”功能。谢谢
    猜你喜欢
    • 1970-01-01
    • 2010-12-03
    • 2012-04-27
    • 2016-03-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多