如果这个问题已被提出/回答,我很抱歉,我原本预计会出现这种情况,但无法找到任何相关问题......
我想创建一个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"]
这是对的吗?
答案 0 :(得分:1)
这种语法肯定是有效的,但我认为你的意思是你可以编写函数签名,这样arg3
只有在被用作命名参数(例如my_function(1, 2, arg3 = 3)
)时才被绑定,否则就会有前两个的所有参数都被*other_args
捕获,在这种情况下答案是否定的。可以通过命名来指定可选参数,但它们也像普通参数一样是位置的,并且在有足够的参数可用时填充,然后再使用*args
或**kwargs
这样的全部内容。
我可能会使用关键字参数
完全按照您的方式编写它