freeCodeCamp/guide/chinese/python/comparisons/index.md

3.4 KiB
Raw Blame History

title localeTitle
Python Comparisons Python比较

Python文档 - 比较

Python中有八个比较操作。它们都具有相同的优先级高于布尔操作的优先级。比较可以任意链接;例如, x < y <= z等效于x < y and y <= z ,除了y仅被评估一次(但在两种情况下,当x < y被发现为假时,根本不评估z )。

此表总结了比较操作:

操作|含义
--------- | -----------------------
< |严格不足
<= |小于或等于 > |严格大于 >= |大于或等于 == |等于 != |不等于 is |对象身份
is not |否定了对象的身份

除了不同的数字类型之外,不同类型的对象永远不会相等。此外,某些类型(例如,函数对象)仅支持简并比较概念,其中该类型的任何两个对象都是不相等的。在将复数与另一个内置数值类型进行比较时,当对象具有无法比较的不同类型时,或者在没有定义的其他情况下, < <= >>=运算符将引发TypeError异常排序。

除非类定义__eq__()方法,否则类的非相同实例通常会比较为不相等。

除非该类定义了足够多的方法__lt__() __le__() __gt__()__ge__() ,否则不能对相同类的其他实例或其他类型的对象排序类的实例(一般情况下) __lt__()__eq__()就足够了,如果你想要比较运算符的常规含义)。

isis not运营商的行为无法定制;它们也可以应用于任何两个对象,并且永远不会引发异常。

我们还可以将<>运算符链接在一起。例如, 3 < 4 < 5将返回True ,但3 < 4 > 5将不返回True 。我们也可以链接相等运算符。例如, 3 == 3 < 5将返回True3 == 5 < 5将不返回True

平等比较 - “是”与“==”

在Python中有两个比较运算符允许我们检查两个对象是否相等。 is运算符和==运算符。但是,他们之间有一个关键的区别!

'是'和'=='之间的关键区别可以概括为:

  • is用来比较认同
  • ==用于比较相等

首先在Python中创建一个列表。

myListA = [1,2,3] 

接下来,创建该列表的副本。

myListB = myListA 

如果我们使用'=='运算符或'is'运算符,两者都将产生True输出。

>>> myListA == myListB # both lists contains similar elements 
 True 
 >>> myListB is myListA # myListB contains the same elements 
 True 

这是因为myListA和myListB都指向同一个列表变量我在Python程序的开头定义了该变量。两个列表在身份和内容上完全相同。

但是,如果我现在创建一个新列表怎么办?

myListC = [1,2,3] 

执行==运算符仍然显示两个列表在内容方面是相同的。

>>> myListA == myListC 
 True 

但是,执行is运算符现在将生成False输出。这是因为myListA和myListC是两个不同的变量尽管包含相同的数据。即使它们看起来一样但它们是不同的

>>> myListA is myListC 
 False # both lists have different reference 

总结一下:

  • 如果两个变量都指向同一个引用, is表达式输出为True
  • 如果两个变量包含相同的数据,则==表达式输出True