def foo(l=None, d=None):
return bar(*l, **d) # eg. bar(1, 2, 3, a=a, b=b)
输入:
l = [1, 2, 3]
d = {'a': a, 'b': b}
foo(l=l, d=d)
当l
为None
时出现问题,即。进行此调用:
foo(d={'a':a})
我应该在 foo
中更改什么才能很好地处理列表和字典上的 NoneType
?
这很丑陋,必须有比这更好的方法:
def foo(l=None, d=None):
if l is not None and d is not None:
return bar(*l, **d)
if l is not None:
return bar(*l)
if d is not None:
return bar(**d)
最佳答案
您可以使用或
与空迭代器短路:
def foo(l=None, d=None):
return bar(*(l or ()), **(d or {}))
或者使其更具可读性,尽管更冗长:
def foo(l=None, d=None):
l = l or ()
d = d or {}
return bar(*l, **d)
关于python - 将列表和字典解压到同一参数中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45545880/