这怎么不出现属性错误?函数对象没有任何比较方法。它以某种方式使用id()吗?
fun1 = lambda:x
fun2 = lambda:x
print fun1 == fun1 # True
print fun1 == fun2 # False
print fun1 > fun2 # True
print fun1 < fun2 # False
print fun1 > 1 # True
我知道它比较地址,但是如何?
拦截__lt __,__ eq__等是一些低级黑客吗?
最佳答案
Function objects没有定义自己的比较或丰富的比较。相反,它们从实现type objects的rich comparisons based on the object's address in memory继承。
因此,是的,它像内置id()函数一样有效地使用地址。
在Python 3中,功能不再可排序。
关于python - python如何比较函数?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/7942346/