Python中===运算符的效果如何实现?

问题描述 投票:0回答:5

如何在Python中实现

===
运算符的效果?

例如,我不希望

False == 0
成为
True

python comparison identity-operator
5个回答
41
投票

如果你想检查值和类型是否相同,请使用:

x == y and type(x) == type(y)

在 Python 中,通常会避免像这样的显式类型比较,但由于布尔值是整数的子类,因此这是唯一的选择。


x is y
比较同一性——两个名称是否引用内存中的同一对象。 Python 布尔值是单例,因此这在比较它们时可以工作,但不适用于大多数类型。


16
投票

尝试

variable is False
False is 0
返回
False
,


2
投票

按照 Mathematica 的定义,这里有一个小函数来完成这项工作。调味

delta
品尝:

def SameQ(pram1, pram2, delta=0.0000001):
    if type(pram1) == type(pram2):
        if pram1 == pram2:
            return True
        try:
            if abs(pram1 - pram2) <= delta:
                return True
        except Exception:
            pass
    return False

1
投票

您可以使用

is
运算符来检查对象身份。然后
False is 0
就会返回
False


0
投票

背景

答案和评论中有很多错误信息。

is
==
===
(严格相等运算符)都是不同的。在 Python 中,与许多其他编程语言一样,检查严格相等是一种常见且重要的做法。

is
操作员

is
用于检查对象身份。

>>> a = 3.4
>>> b = 3.4
>>> a is b
False

==
操作员

==
用于在启用类型强制时检查值。

>>> 3.0 == 3
True

这里执行了隐式类型转换。

===
操作员

严格相等运算符(实现为

===
(在某些主流语言中),在上面的示例中将返回 false。它检查类型和值。

截至目前,Python 尚未实现单个运算符来进行字符串相等性比较。

Jeremy 的回答是实现它的一种常见方法。如果类型和值都匹配,则此解决方案可以正常工作。但它不涵盖派生类型。

x == y and type(x) == type(y)

如果你想将其扩展到派生类型,你应该执行以下操作。

x == y and (isinstance(x, type(y)) or isinstance(y, type(x)))
© www.soinside.com 2019 - 2024. All rights reserved.