Skip to main content
 首页 » 编程设计

python之解析函数中的默认参数而不执行它们

2025年05月04日13linjiqin

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

例如:

def func_a(input, default_arg=True): 
    pass 
 
def func_b(function): 
    pass 
 
func_b(func_a(default_arg=False)) 

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

如何在不执行 func_a 的情况下设置 default_arg=False?

请您参考如下方法:

使用 functools.partial() object :

from functools import partial 
 
func_b(partial(func_a, default_arg=False)) 

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