我知道在 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')。有解决方法吗?
这是一种比目前接受的解决方案更易于管理的解决方案。它可以让您轻松地将默认参数声明为元组,而不是在函数签名中声明每个值的名称。(想象一下对 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 元组中的相应位置填充。
这解决了下面评论中提到的警告。