【问题标题】:Using named arguments with variable length un-named arguments in Python在 Python 中使用具有可变长度未命名参数的命名参数
【发布时间】:2011-03-09 21:12:17
【问题描述】:

如果这个问题已经被问到/回答过,我深表歉意,我原以为会是这样,但找不到任何相关问题...

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

对吗?

【问题讨论】:

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


    【解决方案1】:

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-06-11
      • 1970-01-01
      • 2014-05-04
      相关资源
      最近更新 更多