为什么相同的部分在 Python (2.7.11) 中比较为不相等?

Why do identical partials compare as not equal in Python (2.7.11)?

以下代码:

from functools import partial
def f(a):
    print a
g = partial(f, 1)
h = partial(f, 1)
assert(g == h)

引发断言错误。为什么?

部分 returns 具有属性 .func、.args 和 .keywords 的可调用对象。在示例中:

g.func == h.func == f
g.args == h.args == (1,)
g.keywords == h.keywords == {}

不应该 g==h 吗?

我仔细研究了实现,部分对象似乎只是一个具有上述属性的内部函数。函数永远不会比较相等,除非它们是同一个对象。遗憾的是,我有一个用例,但有几个解决方法。