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

标签 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))

但是,这会调用 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

关于python - 解析函数中的默认参数而不执行它们,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38503937/

相关文章:

Python Selenium 无法单击() 按钮

c - 在 C 中将多维数组作为函数参数传递

python 3 解码字符串状态

python - 递归检测数字是否为阶乘

r - 如何将具有相同协变量的个体的二项式响应数据分解为伯努利,反之亦然?

python - 将Python中定义的函数更改为lambda函数

python - 如何改进我的数据集以增加 yolov4 对象检测框架中的 mAP

python - 通过一个 ps1 脚本打开两个网络服务器

python - 在 Pandas 中合并 "one-to-one"数据帧

javascript - 是否可以在不更改上下文的情况下调用 function.apply?