为什么相同的部分在 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 吗?
我仔细研究了实现,部分对象似乎只是一个具有上述属性的内部函数。函数永远不会比较相等,除非它们是同一个对象。遗憾的是,我有一个用例,但有几个解决方法。
以下代码:
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 吗?
我仔细研究了实现,部分对象似乎只是一个具有上述属性的内部函数。函数永远不会比较相等,除非它们是同一个对象。遗憾的是,我有一个用例,但有几个解决方法。