如何使Python内置函数支持关键字参数?

6

我想使用partial()来构建一个只接收一个参数的函数,
这样我就可以将其传递给一些高阶函数(例如:map()/filter()):


>>> from operator import sub
>>> from functools import partial

>>> map(lambda x:sub(x, 5), [1,2,3])
[-4, -3, -2]

>>> help(sub)
Help on built-in function sub in module operator:

sub(...)
    sub(a, b) -- Same as a - b.

>>> map(partial(sub, b=5), [1,2,3])
TypeError: sub() takes no keyword arguments

有没有办法使sub()(或任何其他内置函数)支持关键字参数?

为什么需要使用关键字参数而不是静态参数呢?为什么不使用 5 而是用 b=5 呢? - CorbinMc
2
@CorbinMc:因为这样你就不能使用functools.partial()包装器了。 - Martijn Pieters
1个回答

2

如果一个在C中定义的函数不接受关键字参数,那么就无法强制让其接受。可以使用 lambda 并手动填充参数,或者将该函数封装在一个Python函数中,这个Python函数可以接受关键字参数。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接