打印传递给函数的参数

2024-04-24 12:45:55 发布

您现在位置:Python中文网/ 问答频道 /正文

有没有一种python方法可以打印传递给函数的所有参数?在

我有一个类似下面的函数。。。在

def modify_setting(self, keyword, method=None, value=None, limit=None, parameter=None):

当我调用这个函数时,我不会给每个参数传递一个参数。我只想详细地调用每个参数,如下所示,但这会产生我不想要的结果。在

^{pr2}$

结果:

Acquisition Mode Modified: Static, 10, None, None

我想要的(或类似的):

Acquisition Mode Modified: Static, 10

Tags: 方法函数selfnone参数valuemodedef
2条回答

如果所有的默认值都是None,那么您可以简单地打印出不是的变量:

print "{} Modified: {}".format(keyword,  method, ", ".join( [str(v) for v in (value, limit, parameter) if not v is None]))

你可以把代码结构得更好一些:

^{pr2}$

你可以用一个装饰器-我想装饰器是Python式的:

def dump_args(func):
    "This decorator dumps out the arguments passed to a function before calling it"
    argnames = func.func_code.co_varnames[:func.func_code.co_argcount]
    fname = func.func_name

    def echo_func(*args,**kwargs):
        print fname, ":", ', '.join(
            '%s=%r' % entry
            for entry in zip(argnames,args) + kwargs.items())
        return func(*args, **kwargs)

    return echo_func

@dump_args
def f1(a,b,c):
    print a + b + c

>>> f1(1, 2, 3)
f1 : a=1, b=2, c=3
6
>>>

@dump_args
def f2(a, b = None, c = None):
    print '{}/{}/{}'.format(a, b, c)

>>> f2(1, c = 3)
f2 : a=1, c=3
1/None/3
>>>

在此处找到装饰器:https://wiki.python.org/moin/PythonDecoratorLibrary

相关问题 更多 >