我试着用部分的方法,观察到以下行为:
首先,我定义了一个函数foo
,它接受2个非关键字参数:
>>> def foo(salutation, name):
... print(salutation, name)
然后,我使用partial创建一个高阶包装器。在
^{pr2}$然后,这样称呼它:
>>> f('Hey')
这给了我Hey Coldspeed
这是意料之中的。接下来,我试图将partial
应用于^{
>>> 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
所支持的。您需要编写自己的版本来支持它,或者在某个第三方库中找到一个。在相关问题 更多 >
编程相关推荐