在不执行函数的情况下解析python函数中的默认参数

Ale*_*sen 1 python function python-3.x default-arguments

我需要将一个函数(不调用它)传递给另一个函数,但我需要为默认参数指定一个不同的值.

例如:

def func_a(input, default_arg=True):
    pass

def func_b(function):
    pass

func_b(func_a(default_arg=False))
Run Code Online (Sandbox Code Playgroud)

但是,这会调用 func_a()并将结果传递给func_b().

如何设置default_arg=False而不执行func_a

Mar*_*ers 5

使用functools.partial()对象:

from functools import partial

func_b(partial(func_a, default_arg=False))
Run Code Online (Sandbox Code Playgroud)

partial()对象也是可调用的,当被调用它时,它会将你给它的参数应用于第一个参数.

演示:

>>> from functools import partial
>>> def func_a(input, default_arg=True):
...     print('func_a() called with {!r}, and default_arg={!r}'.format(input, default_arg))
...
>>> def func_b(function):
...     print('Calling the function')
...     function('Foo bar')
...
>>> func_b(partial(func_a, default_arg=False))
Calling the function
func_a() called with 'Foo bar', and default_arg=False
Run Code Online (Sandbox Code Playgroud)