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

spe*_*peg 12 python comparison identity-operator

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

例如,我不想False == 0成为True.

小智 38

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

x == y and type(x) == type(y)
Run Code Online (Sandbox Code Playgroud)

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


x is y比较标识 - 两个名称是否指向内存中的同一对象.Python布尔值是单例,因此在比较它们时会起作用,但对大多数类型都不起作用.

  • Righto.这是正确的答案.绿色检查需要移动. (6认同)
  • `True,False == 1,0`是语言规范的一部分,那么Python实现不能做到这一点?在你写`type(x)== type(y)`之前切换到不使用duck typing的语言. (2认同)

g.d*_*d.c 17

试试variable is False. False is 0回来False,

  • 不是一个好的答案 - 它不一定适用于其他价值观. (4认同)
  • @Steven,OP 1)没有解释他到底是什么,2)没有添加这些标签.所以我们无法确定他究竟想要什么.但如果它是Mathematica的意思,那么它不是身份,而是类型和价值.因此,`a = 98273; B = 98273; a === b` - >应该是'True`但是`is`会说它是'False`. (3认同)