如何调用函数并仅传递它所期望的参数。例如,我说我有以下功能:
func1 = lambda a: True
func2 = lambda a, b: True
func3 = lambda c: True
我想要一些能够成功调用这些函数的Python代码,而不会通过传递意外参数来引发TypeError
。即。
kwargs = dict(a=1, b=2, c=3)
for func in (func1, func2, func3):
func(**kwargs) # some magic here
我对定义它们时只为函数添加**kwargs
不感兴趣。
答案 0 :(得分:10)
您可以使用inspect.getargspec()
:
from inspect import getargspec
kwargs = dict(a=1, b=2, c=3)
for func in (func1, func2, func3):
func(**dict((name, kwargs[name]) for name in getargspec(func)[0]))
答案 1 :(得分:4)
那么,根据您对变量参数和关键字参数的确切要求,结果会略有不同,但您可能希望从inspect.getargspec(func)
开始。