代码之家  ›  专栏  ›  技术社区  ›  Ray

测试函数对象(函子)等式,它是如何计算的?我用“is”还是“=”?

  •  1
  • Ray  · 技术社区  · 7 年前

    考虑以下功能:

    def f():
        print("WTF?!")
    
    def g():
        print("WTF?!")
    

    他们都做了完全相同的事情,但测试 f == g False 。我是否由此假设函子等式是通过引用计算的,并且两者之间没有差异 is == ?

    不管是不是这样,哪一个更好用(即使只是在风格上)?

    编辑

    This question 我想是复制品。我理解引用等式和值等式之间的区别,我只是想理解如何 == 对函子使用值相等(如果有的话)。

    2 回复  |  直到 7 年前
        1
  •  3
  •   MSeifert    7 年前

    函数对象没有自定义 __eq__ 方法(将值与 == __均衡器__ object.__eq__ same object .

    >>> f == g
    False
    

    与(在本例中)相同:

    >>> f is g
    False
    

    __均衡器__

    >>> type(f).__eq__ is object.__eq__
    True
    
        2
  •  1
  •   ZAhmed    7 年前