以下代码:
from functools import partial
def f(a):
print a
g = partial(f, 1)
h = partial(f, 1)
assert(g == h)
引发断言错误。为什么呢?
Partial返回一个带有.func,.args和.keywords属性的可调用对象。在示例中:
g.func == h.func == f
g.args == h.args == (1,)
g.keywords == h.keywords == {}
不应该g == h?
答案 0 :(得分:1)
我更多地了解了实现,而部分对象似乎只是具有上述属性的内部函数。函数永远不会相等,除非它们是同一个对象。可惜,我有一个用例,但有几种解决方法。