在Python中使用带有可变长度未命名参数的命名参数

时间:2010-06-29 22:28:13

标签: python named-parameters variadic-functions keyword-argument

如果这个问题已被提出/回答,我很抱歉,我原本预计会出现这种情况,但无法找到任何相关问题......

我想创建一个python函数,它接受两个必需参数,一个命名参数,以及一些未知数量的其他非命名参数,如下所示:

def my_function(arg1, arg2, arg3=None, *other_args):
    pass

这在Python 2.x中是否可行? 除了可变长度参数列表外,函数是否可以接受命名参数?

我认为答案是'不',在这种情况下,我认为我可用的唯一解决方案类似于以下内容:

def my_function(arg1, arg2, **kwargs):
    arg3 = kwargs["arg3"]
    other_args = kwargs["other_args"]

这是对的吗?

1 个答案:

答案 0 :(得分:1)

这种语法肯定是有效的,但我认为你的意思是你可以编写函数签名,这样arg3只有在被用作命名参数(例如my_function(1, 2, arg3 = 3))时才被绑定,否则就会有前两个的所有参数都被*other_args捕获,在这种情况下答案是否定的。可以通过命名来指定可选参数,但它们也像普通参数一样是位置的,并且在有足够的参数可用时填充,然后再使用*args**kwargs这样的全部内容。

我可能会使用关键字参数

完全按照您的方式编写它