gpt4 book ai didi

python - 测试函数对象(functor)是否相等,如何求值?我使用 `is` 还是 `==` ?

转载 作者:太空宇宙 更新时间:2023-11-04 09:56:27 26 4
gpt4 key购买 nike

考虑这些函数:

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

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

它们都做同样的事情,但是 f == g 的测试仍然给出 False。我是否由此假设仿函数相等性是通过引用求值的,并且 is== 之间没有区别?

无论情况是否如此,哪个更好用(即使只是风格上)?

顺便说一句,我主要对 Python 3 (Python 3.6) 感兴趣。

编辑

This question我认为不是重复。我理解引用相等和值相等之间的区别,我只是想了解 == 如何在仿函数上使用值相等(如果有的话)。

最佳答案

函数对象没有自定义__eq__方法(当将值与 == 进行比较时调用此方法),以便它们返回到父类(super class) __eq__ 方法。在这种情况下,它是 object.__eq__ 实际上,它只是比较它们是否是 same object。 .

所以:

>>> f == g
False

与(在本例中)相同:

>>> f is g
False

以防万一你感兴趣,我怎么知道函数没有自定义 __eq__ 方法:

>>> type(f).__eq__ is object.__eq__
True

关于python - 测试函数对象(functor)是否相等,如何求值?我使用 `is` 还是 `==` ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45612425/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com