【问题标题】:Default value for optional parameter可选参数的默认值
【发布时间】:2019-12-15 11:20:45
【问题描述】:

我正在 python 中创建一个函数,该函数采用可选参数*args。这个函数调用另一个传递这个可选参数的函数。但是,当某个条件适用时,我希望可选参数具有某个默认值,而不是函数调用中传递的值。在下面代码的 sn-p 中可以清楚地看到,简单地为 *args 设置一个新值是不正确的,但正确的方法是什么?

def function(arg1, arg2, *args):
    if condition:
        *args = value
    function2(*args)

【问题讨论】:

  • 不清楚设置*args的新值是否不正确。请解释一下。
  • 好吧,它给出了一个错误哈哈。我认为这是不好的语法或类似的东西。

标签: python optional-parameters optional-arguments


【解决方案1】:

您可以通过 args 中的索引来识别您的参数:

def function(arg1, arg2, *args):
    if condition:
        args = list(args)
        if len(args) == 0:  # the second arg in args was not set
            args.append("first default")
        if len(args) == 1:
            args.append("second default")
    function2(*args)

但正如你所见 - 它有点难看。如果您想使用大量默认位置参数,它将涉及大量 if 语句。如果可以,请使用**kwargs

【讨论】:

    【解决方案2】:

    显然*args 是一个列表,所以我必须将其指定为args = [value],而不是*args = value。这样就解决了问题。

    【讨论】:

    • 它实际上是一个元组,所以从技术上讲它应该是args = (value,)——但大多数时候差异并不重要。
    猜你喜欢
    • 1970-01-01
    • 2013-10-08
    • 1970-01-01
    • 1970-01-01
    • 2021-07-05
    • 1970-01-01
    • 2010-11-10
    • 2016-08-23
    • 2011-02-13
    相关资源
    最近更新 更多