尝试部分操作时,我观察到以下行为:
首先,我定义了一个函数foo
它需要 2 个非关键字参数:
>>> def foo(salutation, name):
... print(salutation, name)
然后,我使用partial 创建一个更高阶的包装器。
>>> from functools import partial
>>> f = partial(foo, name='Coldspeed')
然后,这样称呼它:
>>> f('Hey')
这给了我Hey Coldspeed
这是预料之中的。接下来,我尝试申请partial
to isinstance https://docs.python.org/3/library/functions.html#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
I tried classinfo
作为参数名称,因为这是文档中指定的(上面链接)。看来实际的定义是这样的not将第二个参数命名为classinfo
正如文档可能另有说明的那样。
现在,我如何创建带有第二个参数的部分函数而不强制指定参数名称?我绝对做不到f = partial(isinstance, str)
因为str
将被视为第一个参数,而不是第二个。如果可能的话,想找到一种方法来做到这一点而不使用lambda
功能也。