在Python中,如何使用* args和** kwargs向函数添加关键字参数?

时间:2017-07-04 10:43:04

标签: python

假设我首先拥有一个具有可变数量的位置和关键字参数的函数,如下所示:

def print_stuff(*args, **kwargs):
    print("Args: {args}".format(args=args))
    print("Kwargs: {kwargs}".format(kwargs=kwargs))

我想添加一个关键字参数maybe,我尝试这样做:

def print_stuff(*args, **kwargs, maybe=False):
    print("Args: {args}".format(args=args))
    print("Kwargs: {kwargs}".format(kwargs=kwargs))
    if maybe:
        print("Maybe!")

但是,我得到SyntaxError: invalid syntax。我考虑将其重写为

def print_stuff(*args, **kwargs):
    print("Args: {args}".format(args=args))
    print("Kwargs: {kwargs}".format(kwargs=kwargs))
    maybe = kwargs.pop('maybe', False)
    if maybe:
        print("Maybe!")

但我发现这不太美观,因为参数maybe不再在def行,所以要查看所有可能的参数,你必须阅读整个函数体。

还有更优雅的方法吗? (我看了一下https://docs.python.org/3/reference/expressions.html#calls,但我没有立即知道。

0 个答案:

没有答案