在函数调用上打印参数

时间:2013-08-16 10:53:21

标签: python

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

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

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

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)

有没有办法呢

2 个答案:

答案 0 :(得分: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并返回值

是相当简单的

答案 1 :(得分:1)

您是否尝试使用装饰器?

def DebugDecorator(func)

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


@DebugDecorator
def someFunction():
    code

编辑:我太慢了:)