如何在Python中实现
===
运算符的效果?
例如,我不希望
False == 0
成为 True
。
如果你想检查值和类型是否相同,请使用:
x == y and type(x) == type(y)
在 Python 中,通常会避免像这样的显式类型比较,但由于布尔值是整数的子类,因此这是唯一的选择。
x is y
比较同一性——两个名称是否引用内存中的同一对象。 Python 布尔值是单例,因此这在比较它们时可以工作,但不适用于大多数类型。
尝试
variable is False
。 False is 0
返回 False
,
按照 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
您可以使用
is
运算符来检查对象身份。然后False is 0
就会返回False
。
答案和评论中有很多错误信息。
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)))