假设我有这样一个函数:
def func_1(a, b=1, c=None):
code here
现在我想创建另一个具有相同内部结构但关键字参数不同的函数。
def func_2(a, b=2, c='asdf'):
code here
一个选项是这样的闭包:
def make_func(b, c):
def func(a, b=b, c=c):
code here
return func
func_1 = make_func(1, None)
func_2 = make_func(2, 'asdf')
是否有更简洁/Pythonic 的方式来解决这个问题?
最佳答案
使用 functools.partial()
object :
from functools import partial
func_2 = partial(func_1, b=2, c='asdf')
提供给部分的默认值可以在调用时再次覆盖:
>>> from functools import partial
>>> def func_1(a, b=1, c=None):
... return a, b, c
...
>>> func_2 = partial(func_1, b=2, c='asdf')
>>> func_2(42)
(42, 2, 'asdf')
>>> func_2(42, b=5, c='spam')
(42, 5, 'spam')
关于python - 在 Python 中更改函数的关键字默认值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36023611/