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

bra*_*ers 8 python

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

func1 = lambda a: True
func2 = lambda a, b: True
func3 = lambda c: True
Run Code Online (Sandbox Code Playgroud)

我想要一些能够成功调用这些函数的Python代码,而不需要TypeError通过传递意外的参数来引发这些函数.即

kwargs = dict(a=1, b=2, c=3)
for func in (func1, func2, func3):
    func(**kwargs)  # some magic here
Run Code Online (Sandbox Code Playgroud)

**kwargs定义它们时,我对添加函数不感兴趣.

Sve*_*ach 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]))
Run Code Online (Sandbox Code Playgroud)

  • 请注意,自3.0以来不推荐使用getfullargspec(),它提供有关仅关键字参数和注释的信息.但是getfullargspec()在2.7及更低版本中不可用 (3认同)