在Python中调用函数并仅传递它期望的参数

时间:2011-04-04 20:19:13

标签: python

如何调用函数并仅传递它所期望的参数。例如,我说我有以下功能:

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不感兴趣。

2 个答案:

答案 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)开始。