Python 2.7 为什么在Python(2.7.11)中相同的部分比较时不相等?
以下代码:Python 2.7 为什么在Python(2.7.11)中相同的部分比较时不相等?,python-2.7,partials,Python 2.7,Partials,以下代码: 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=
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不应该吗?我更深入地研究了实现,分部对象似乎只是一个具有上述属性的内部函数。除非函数是同一个对象,否则它们永远不会比较相等。遗憾的是,我有一个用例,但有几个解决方法。最具挑战性的方法可能是创建一个基于类的替换,它定义了
\uuuuuueq\uuuq()
。