使用 functools.partial with partial 参数



尝试使用部分内容时,我观察到以下行为:

首先,我定义了一个函数foo它接受 2 个非关键字参数:

>>> def foo(salutation, name):
...     print(salutation, name)

然后,我使用 partial 创建一个高阶包装器。

>>> from functools import partial 
>>> f = partial(foo, name='Coldspeed')

然后,这样称呼它:

>>> f('Hey')

这给了我意料之中的Hey Coldspeed。接下来,我尝试将partial应用于isinstance

>>> f = partial(isinstance, classinfo=str)
>>> f('hello')

但这给了我一个错误:

Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: isinstance() takes no keyword arguments 

我尝试classinfo作为参数名称,因为这是文档中指定的(上面链接(。实际定义似乎没有像文档可能指出的那样具有名为classinfo的第二个参数。

现在,我将如何使用第二个参数创建一个部分函数而不被迫指定 argname?我绝对不能做f = partial(isinstance, str)因为str将被视为第一个论点,而不是第二个论点。如果可能的话,希望找到一种方法来做到这一点,而无需使用lambda函数。

不幸的是,这不是functools.partial支持的东西。您需要编写自己的版本来支持它,或者在某个地方的第三方库中找到一个。

相关内容

  • 没有找到相关文章

最新更新