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

6.0 KiB
Raw Blame History

title localeTitle
Python Comparisons Сравнение Python

Документы Python - Сравнение

В Python имеется восемь операций сравнения. Все они имеют одинаковый приоритет (что выше, чем у булевых операций). Сравнения могут быть скованы произвольно; например, x < y <= z эквивалентно x < y and y <= z , за исключением того, что y оценивается только один раз (но в обоих случаях z вообще не оценивается, когда x < y оказывается ложным).

В этой таблице приведены операции сравнения:

Операция | Имея в виду
--------- | -----------------------
< | строго меньше
<= | меньше или равно > | строго больше, чем >= | больше или равно == | равно != | не равный is | идентификатор объекта
is not | отрицательный идентификатор объекта

Объекты разных типов, кроме разных числовых типов, никогда не сравниваются с равными. Кроме того, некоторые типы (например, объекты функций) поддерживают только вырожденное понятие сравнения, где любые два объекта такого типа неравны. Операторы < , <= , > и >= будут вызывать исключение TypeError при сравнении сложного числа с другим встроенным числовым типом, когда объекты имеют разные типы, которые нельзя сравнивать, или в других случаях, когда нет определенных упорядоченность.

__eq__() экземпляры класса обычно сравниваются как не равные, если класс не определяет метод __eq__() .

Экземпляры класса не могут быть упорядочены относительно других экземпляров одного и того же класса или других типов объектов, если только класс не определяет достаточно методов __lt__() , __le__() , __gt__() и __ge__() (в общем случае , __lt__() и __eq__() достаточны, если вы хотите использовать обычные значения операторов сравнения).

Поведение is и is not операторы не могут быть настроены; также они могут применяться к любым двум объектам и никогда не создавать исключение.

Мы также можем связать операторы < и > . Например, 3 < 4 < 5 вернет True , но 3 < 4 > 5 не будет. Мы также можем связать оператор равенства. Например, 3 == 3 < 5 вернет True но 3 == 5 < 5 не будет.

Сравнение равенств - "is" vs "=="

В Python есть два оператора сравнения, которые позволяют нам проверить, равны ли два объекта. Оператор is оператор == . Однако есть ключевое различие между ними!

Ключевое различие между «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 

Подводить итоги:

  • An is выражение выводит True если обе переменные указывают на одну и ту же ссылку
  • Выражение == выводит значение True если обе переменные содержат одни и те же данные