我有一个对象,它接受一个函数名 func、args 和 kwargs,并在某些时候运行
func(*args, **kwargs)
问题是,如果 func 不需要 args/kwargs,则 args/kwargs 默认为 None,这会导致 TypeError。例如,如果函数不需要参数,则 args、kwargs 默认为 None:
def test():
pass
args = None
kwargs = None
test(*args, **kwargs)
---------------------------------------------------------------------------
TypeError Traceback (most recent call last)
<ipython-input-4-b9618694fbf2> in <module>()
----> 1 test(*args, **kwargs)
TypeError: test() argument after ** must be a mapping, not NoneType
我确信有一种很好的方法可以解决这个问题,而无需级联 if 语句检查 args/kwargs 是否存在,每个语句都有自己的函数调用,但我不确定如何。主要目标是将函数及其未知参数传递给对象,然后该对象将在稍后的方法中使用它们。
编辑:为清楚起见添加了一个示例