0

想知道最简单的方法是获取调试打印。

我正在查看一些代码,并且有一些函数使用大量通用文本参数作为输入。所以我正在寻找一种简单的方法来打印该行而无需修改它以避免在那里出现拼写错误或错误

简单的例子,代码中的一行

someFunction('%s_someString', variable, 
   '%s_moreStrings' %someOtherString, someMoreString, someObject)

所以而不是检查

print 'someFunction('%s_someString', %s, '%s_moreStrings', 'someObject')  %
               (someOtherString, variable, someMoreString)

我正在寻找一种方法来准确地打印它。我试图做一些事情,比如编写一个可以打印字符串并对其进行评估的函数,但这并不像我想要的那样工作

someFunction('someOtherString_someString', variable,  
             'someMoreString_moreStrings', someObject)

有没有办法做到这一点

4

2 回答 2

4

这是一个简单的实现:

from functools import wraps

def prints_invocation(f):
    @wraps(f)
    def wrapped(*args):
        print "%s(%s)" % (f.__name__, ', '.join(repr(a) for a in args))
        return f(*args)
    return wrapped
>>> @prints_invocation
... def add(x, y):
...     return x + y
>>> add(1, 2)
add(1, 2)
3

将其扩展到打印kwargs和返回值将是相当简单的

于 2013-08-16T11:57:34.880 回答
1

您是否尝试过使用装饰器?

def DebugDecorator(func)

    def log(*args, **kw):
        print "{0}({1}".format(func.__name__, *args)
        return func(*args, **kw)


@DebugDecorator
def someFunction():
    code

编辑:我太慢了:)

于 2013-08-16T12:10:39.433 回答