Python 函数参数中元组的默认值

Bom*_*e_A 5 python

我知道在 python 中你可以为参数设置默认值,如下所示:

 def func(self, arg='value'):
     #somecode
Run Code Online (Sandbox Code Playgroud)

我有一个最多需要 16 个参数的函数,因此我希望将它们存储为元组。问题是我想为元组的某些值设置默认值,而不是整个值。将默认元组设置为

def func(self, values=('foo', 'bar', 'foobar')):
Run Code Online (Sandbox Code Playgroud)

如果我传入一个只有两个值的元组,会被覆盖吗?如果我这样做,例如:

 func(('bar', 'foo')
Run Code Online (Sandbox Code Playgroud)

值==('bar','foo'),而不是('bar','foo','foobar')。有解决方法吗?

kar*_*kg3 4

这是一种比目前接受的解决方案更易于管理的解决方案。它可以让您轻松地将默认参数声明为元组,而不是在函数签名中声明每个值的名称。(想象一下对 4x4 矩阵执行此操作!)

更新:

你可以做:

def func(self, args):
    defaultargs = (1, 2, 3)
    args = tuple(map(lambda x, y: y if y is not None else x, defaultargs, args))
Run Code Online (Sandbox Code Playgroud)

在这种情况下,您可以将其放在内部并对每个元素执行或操作,而不是在函数定义中使用默认参数,如图所示。这样,args 中留空的任何位置都将由默认 args 元组中的相应位置填充。

这解决了下面评论中提到的警告。