1

如果已经提出/回答了这个问题,我深表歉意,我原以为会是这种情况,但找不到任何相关问题...

我想创建一个 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"]

那是对的吗?

4

1 回答 1

1

该语法当然是有效的,但我认为您的意思是您是否可以编写函数签名,以便arg3仅在将其用作命名参数(例如my_function(1, 2, arg3 = 3))时才绑定,否则使前两个之后的所有参数都被 捕获*other_args,在这种情况下答案是不。可选参数可以通过命名来指定,但它们也像普通参数一样是位置参数,如果有足够的参数可用,则在诉诸诸如*argsor之类的包罗万象之前填充它们**kwargs

我可能会像你一样写它,使用关键字参数

于 2010-06-29T22:31:45.930 回答