Как пишется в питоне больше или равно

Что такое оператор?

Говоря простым языком, в выражении 2 + 3, числа «2» и «3» называются операндами, знак «+» оператором. В языке программирования Python существуют следующие типы операторов:

  • Арифметические операторы
  • Операторы сравнения (реляционные)
  • Операторы присваивания
  • Побитовые операторы
  • Логические операторы
  • Операторы членства (Membership operators)
  • Операторы тождественности (Identity operators)

Рассмотрим их по порядку.

Оператор Описание Примеры
+ Сложение — Суммирует значения слева и справа от оператора

15 + 5 в результате будет 20
20 + -3 в результате будет 17
13.4 + 7 в результате будет 20.4

Вычитание — Вычитает правый операнд из левого 15 — 5 в результате будет 10
20 — -3 в результате будет 23
13.4 — 7 в результате будет 6.4
* Умножение — Перемножает операнды 5 * 5 в результате будет 25
7 * 3.2 в результате будет 22.4
-3 * 12 в результате будет -36
/ Деление — Делит левый операнд на правый 15 / 5 в результате будет 3
5 / 2 в результате будет 2 (В Python 2.x версии при делении двух целых чисел результат будет целое число)
5.0 / 2 в результате будет 2.5 (Чтобы получить «правильный» результат хотя бы один операнд должен быть float)
% Деление по модулю — Делит левый операнд на правый и возвращает остаток. 6 % 2 в результате будет 0
7 % 2 в результате будет 1
13.2 % 5 в результате 3.2
** Возведение в степень — возводит левый операнд в степень правого 5 ** 2 в результате будет 25
2 ** 3 в результате будет 8
-3 ** 2 в результате будет -9
// Целочисленное деление — Деление в котором возвращается только целая часть результата. Часть после запятой отбрасывается. 12 // 5 в результате будет 2
4 // 3 в результате будет 1
25 // 6 в результате будет 4

Операторы сравнения в Python:

Оператор Описание Примеры
== Проверяет равны ли оба операнда. Если да, то условие становится истинным. 5 == 5 в результате будет True
True == False в результате будет False
«hello» == «hello» в результате будет True
!= Проверяет равны ли оба операнда. Если нет, то условие становится истинным. 12 != 5 в результате будет True
False != False в результате будет False
«hi» != «Hi» в результате будет True
<> Проверяет равны ли оба операнда. Если нет, то условие становится истинным.

12 <> 5 в результате будет True. Похоже на оператор !=

> Проверяет больше ли значение левого операнда, чем значение правого. Если да, то условие становится истинным. 5 > 2 в результате будет True.
True > False в результате будет True.
«A» > «B» в результате будет False.
< Проверяет меньше ли значение левого операнда, чем значение правого. Если да, то условие становится истинным. 3 < 5 в результате будет True.
True < False в результате будет False.
«A» < «B» в результате будет True.
>= Проверяет больше или равно значение левого операнда, чем значение правого. Если да, то условие становится истинным. 1 >= 1 в результате будет True.
23 >= 3.2 в результате будет True.
«C» >= «D» в результате будет False.
<= Проверяет меньше или равно значение левого операнда, чем значение правого. Если да, то условие становится истинным. 4 <= 5 в результате будет True.
0 <= 0.0 в результате будет True.
-0.001 <= -36 в результате будет False.

Операторы присваивания в Python:

Оператор Описание Примеры
= Присваивает значение правого операнда левому. c = 23 присвоит переменной с значение 23
+= Прибавит значение правого операнда к левому и присвоит эту сумму левому операнду.

с = 5
а = 2
с += а равносильно: с = с + а. с будет равно 7

-= Отнимает значение правого операнда от левого и присваивает результат левому операнду.

с = 5
а = 2
с -= а равносильно: с = с — а. с будет равно 3

*= Умножает правый операнд с левым и присваивает результат левому операнду.

с = 5
а = 2
с *= а равносильно: с = с * а. c будет равно 10

/= Делит левый операнд на правый и присваивает результат левому операнду. с = 10
а = 2
с /= а равносильно: с = с / а. c будет равно 5
%= Делит по модулю операнды и присваивает результат левому. с = 5
а = 2
с %= а равносильно: с = с % а. c будет равно 1
**= Возводит в левый операнд в степень правого и присваивает результат левому операнду. с = 3
а = 2
с **= а равносильно: с = с ** а. c будет равно 9
//= Производит целочисленное деление левого операнда на правый и присваивает результат левому операнду. с = 11
а = 2
с //= а равносильно: с = с // а. c будет равно 5

Побитовые операторы в Python:

Побитовые операторы предназначены для работы с данными в битовом (двоичном) формате. Предположим, что у нас есть два числа a = 60; и b = 13. В двоичном формате они будут иметь следующий вид:

a = 0011 1100

b = 0000 1101

Оператор Описание Примеры
& Бинарный «И» оператор, копирует бит в результат только если бит присутствует в обоих операндах. (a & b) даст нам 12, которое в двоичном формате выглядит так 0000 1100
| Бинарный «ИЛИ» оператор копирует бит, если тот присутствует в хотя бы в одном операнде. (a | b) даст нам 61, в двоичном формате 0011 1101
^ Бинарный «Исключительное ИЛИ» оператор копирует бит только если бит присутствует в одном из операндов, но не в обоих сразу. (a ^ b) даст нам 49, в двоичном формате 0011 0001
~ Бинарный комплиментарный оператор. Является унарным (то есть ему нужен только один операнд) меняет биты на обратные, там где была единица становиться ноль и наоборот. (~a ) даст в результате -61, в двоичном формате выглядит 1100 0011.
<< Побитовый сдвиг влево. Значение левого операнда «сдвигается» влево на количество бит указанных в правом операнде. a << 2 в результате даст 240, в двоичном формате 1111 0000
>> Побитовый сдвиг вправо. Значение левого операнда «сдвигается» вправо на количество бит указанных в правом операнде. a >> 2 даст 15, в двоичном формате  0000 1111

Логические операторы в Python:

Оператор Описание Примеры
and Логический оператор «И». Условие будет истинным если оба операнда истина.

True and True равно True.
True and False равно False.
False and True равно False.
False and False равно False.

or Логический оператор «ИЛИ». Если хотя бы один из операндов истинный, то и все выражение будет истинным. True or True равно True.
True or False равно True.
False or True равно True.
False or False равно False.
not Логический оператор «НЕ». Изменяет логическое значение операнда на противоположное. not True равно False.
not False равно True.

Операторы членства в Python:

В добавок к перечисленным операторам, в Python присутствуют, так называмые, операторы членства, предназначенные для проверки на наличие элемента в составных типах данных, таких, как строки, списки, кортежи или словари:

Оператор Описание Примеры
in Возвращает истину, если элемент присутствует в последовательности, иначе возвращает ложь. «cad» in «cadillac» вернет True.
1 in [2,3,1,6] вернет True.
«hi» in {«hi»:2,»bye»:1} вернет True.
 2 in {«hi»:2,»bye»:1} вернет False (в словарях проверяется наличие в ключах, а не в значениях).
not in Возвращает истину если элемента нет в последовательности. Результаты противоположны результатам оператора in.

Операторы тождественности в Python:

Операторы тождественности сравнивают размещение двух объектов в памяти компьютера.

Оператор Описание Примеры
is Возвращает истину, если оба операнда указывают на один объект. x is y вернет истину, если id(x) будет равно id(y).
is not Возврашает ложь если оба операнда указывают на один объект. x is not y, вернет истину если id(x) не равно id(y).

Приоритет операторов в Python

В следующей таблице описан приоритет выполнения операторов в Python от наивысшего (выполняется в первую очередь) до наинизшего.

Оператор Описание
** Возведение в степень
~ + — Комплиментарный оператор
* / % // Умножение, деление, деление по модулю, целочисленное деление.
+ — Сложение и вычитание.
>> << Побитовый сдвиг вправо и побитовый сдвиг влево.
& Бинарный «И».
^ | Бинарный  «Исключительное ИЛИ» и бинарный «ИЛИ»
<= < > >= Операторы сравнения
<> == != Операторы равенства
= %= /= //= -= += *= **= Операторы присваивания
is is not Тождественные операторы
in not in Операторы членства
not or and Логические операторы

Оператор «Меньше или равно» в Python используется для сравнения, если операнд меньше или равен другому операнду.

Синтаксис:

operand_1 <= operand_2

Оператор <= возвращает логическое значение true, если значение операнда_1 меньше или равно значению операнда_2. В противном случае возвращается False. Если операнды представляют собой последовательности, такие как строки, списки, кортежи и т.д., соответствующие элементы объектов сравниваются для вычисления результата.

Сравнение происходит для всех соответствующих элементов из двух последовательностей, пока они не получат значение False в результате сравнения или пока не будет достигнут конец последовательности со всеми истинными значениями, возвращенными во время сравнения.

Меньше или Равно можно рассматривать как составное выражение, образованное операторами, как показано ниже.

(operand_1 < operand_2) or (operand_1 == operand_2)

Пример 1

В этом примере мы сравним два целых числа, x и y, и проверим, x меньше или равно y.

x = 5
y = 12
result = x <= y
print(result) #True

x = 8
y = 8
result = x <= y
print(result) #True

x = 78
y = 8
result = x <= y
print(result) #False

Вывод:

True
True
False

Пример 2: с последовательностями

Последовательность может быть строкой, списком, кортежем и т.д. Вы можете сравнить две последовательности, используя оператор сравнения «меньше или равно».

Для чисел это прямое математическое решение, если левый операнд меньше или равен правому операнду. Но для последовательностей оператор итеративно сравнивает соответствующие элементы из двух последовательностей. Сравнение происходит для всех соответствующих элементов, пока они не получат значение False в результате сравнения или пока не будет достигнут конец последовательности со всеми истинными значениями, возвращенными во время сравнения.

В следующей программе мы сравним два списка, x и y, и проверим, x меньше или равно y.

x = [41, 54, 21]
y = [98, 8]
z = [41, 54, 4, 6]
k = [41, 54, 21]
print(x <= y) #True
print(x <= z) #False
print(x <= k) #True

Вывод:

True
False
True

Проверка x <= y означает проверку, если [41, 54, 21] <= [98, 8]. При сравнении первого элемента в списках оператор «меньше или равно» возвращает True.

Для x <= z означает проверку, если [41, 54, 21] <= [41, 54, 4, 6]. При сравнении первых двух элементов в списках оператор <= возвращает True. Итак, оператор исследует, пока не достигнет конца списка с True для всех элементов или False в середине. Для третьего элемента оператор возвращает False. Теперь оператор останавливает сравнение и возвращает False.

А для x <= k из данных ясно, что оператор возвращает True.

Оператор “Больше или равно”

Оператор «Больше чем» или «Равно» в Python используется для сравнения, если операнд больше или равен другому операнду.

Синтаксис:

operand_1 ><= operand_2

Оператор Больше или равно возвращает логическое значение. true, если значение операнда_1 больше или равно значению операнда_2. В противном случае возвращается False. Если операнды представляют собой последовательности, такие как строки, списки, кортежи и т.д., соответствующие элементы объектов сравниваются для вычисления результата.

Сравнение происходит для всех соответствующих элементов из двух последовательностей, пока они не получат значение False в результате сравнения или пока не будет достигнут конец последовательности со всеми истинными значениями, возвращенными во время сравнения.

«Больше» или «Равно» можно рассматривать как составное выражение, образованное операторами «Больше чем» и «Равно», как показано ниже.

(operand_1 > operand_2) or (operand_1 == operand_2)

Пример

В этом примере мы сравним два целых числа, x и y, и проверим, x больше или равно y.

x = 57
y = 12
result = x >= y
print(result) #True

x = 8
y = 8
result = x >= y
print(result) #True

x = 78
y = 89
result = x >= y
print(result) #False

Вывод:

True
True
False

Пример 2: с последовательностями

Последовательность может быть строкой, списком, кортежем и т.д. Вы можете сравнить две последовательности, используя оператор сравнения больше или равно.

Для чисел это прямое математическое решение, если левый операнд больше или равен правому операнду. Но для последовательностей оператор итеративно сравнивает соответствующие элементы из двух последовательностей. Сравнение происходит для всех соответствующих элементов из двух последовательностей, пока они не получат значение False в результате сравнения или пока не будет достигнут конец последовательности со всеми истинными значениями, возвращенными во время сравнения.

В следующей программе мы сравним два списка, x и y, и проверим, x больше или равно y.

x = [41, 54, 21]
y = [9, 8]
z = [41, 54, 74, 6]
k = [41, 54, 21]
print(x >= y) #True
print(x >= z) #False
print(x >= k) #True

Вывод:

True
False
True

Проверка x> = y означает проверку, если [41, 54, 21]> = [9, 8]. При сравнении первого элемента в списках оператор больше или равно возвращает True.

Для x> = z означает проверку, если [41, 54, 21]> = [41, 54, 74, 6]. При сравнении первых двух элементов в списках оператор больше или равно возвращает True. Итак, оператор исследует, пока не достигнет конца списка с True для всех элементов или False в середине.

Для третьего элемента оператор возвращает False. Теперь оператор останавливает сравнение и возвращает False для общего сравнения двух списков. А для x> = k из данных ясно, что оператор возвращает True.

Операторы в Python используются для выполнения определенных задач или управления ими. Операторы сравнения Python, также известные как операторы отношения имен, используются для сравнения двух значений и для применения условий соответственно.

Здесь может быть два возможных выхода: True или False .

Операторы Сравнения Python Блок-Схема

Есть 6 типов операторов сравнения:

6 типов оператора сравнения

1. Меньше (<)

Он используется для проверки меньшего значения или переменной, содержащей меньшее значение по сравнению с другим числом или переменной. Если предоставленное число или переменная меньше указанного числа или переменной. Тогда оператор Less Than вернет True. В противном случае он вернет false.

a = 10
if (a < 10)
 print("Yes")
 else
  print("No")

Выход: Нет

2. Больше, чем (>)

Он используется для проверки большего значения или переменной, содержащей большее значение, по сравнению с другим числом или переменной. Если предоставленное число или переменная больше, чем данное число или переменная. Тогда оператор Greater Than вернет True. В противном случае он вернет false.

a = 10
if (a > 10)
 print("True")
else
  print("False")

Вывод: ложь

3. Равно (==)

Этот оператор проверяет одинаковые значения. Если введенное значение и данное значение равны, он вернет True, иначе False.

a = 10
b = 20
if (a == b)
 print("True")
else
 print("False")

Вывод: ложь

4. Не равно (! = Или <>)

Он обозначается != , Это полная противоположность оператору равенства. Он возвращает True, если значения по обе стороны от оператора не равны.

print(3!=3.0)

Вывод: ложь

5. Меньше или равно (<=)

Этот оператор принимает значение True только если значение слева меньше или равно значению справа.

a = 15
b = 5
if(b <= a)
 print("b is either less than or equal to a")

Вывод: b меньше или равно a

6. Больше или равно (> =)

Этот оператор принимает значение True только если значение слева больше или равно значению справа.

a = 5
b = 15
if(b >= a)
 print("b is either greater than or equal to a")

Вывод: b больше или равно a

Пример

a = 10
b = 5
c = 0

if ( a == b ):
   print "a is equal to b"
else:
   print "a is not equal to b"

if ( a != b ):
   print "a is not equal to b"
else:
   print "a is equal to b"

if ( a <> b ):
   print "a is not equal to b"
else:
   print "a is equal to b"

if ( a < b ):
   print "a is less than b" 
else:
   print "a is not less than b"

if ( a > b ):
   print "a is greater than b"
else:
   print "a is not greater than b"

a = 6;
b = 15;
if ( a <= b ):
   print "a is either less than or equal to  b"
else:
   print "a is neither less than nor equal to  b"

if ( b >= a ):
   print "b is either greater than  or equal to b"
else:
   print "b is neither greater than  nor equal to b"

Вывод:

a is not equal to b
a is not equal to b
a is not equal to b
a is not less than b
a is greater than b
a is either less than or equal to b
b is either greater than or equal to b

В этом руководстве речь пойдет об операторах языка программирования Python. Вы узнаете об арифметических, логических и битовых операторах, а также операторах сравнения, присваивания, принадлежности, тождественности и их синтаксисе. Все это будет проиллюстрировано примерами.

Оператор в Python — это символ, который выполняет операцию над одним или несколькими операндами.
Операндом выступает переменная или значение, над которыми проводится операция.

Операторы Python бывают 7 типов:

  • Арифметические операторы
  • Операторы сравнения
  • Операторы присваивания
  • Логические операторы
  • Операторы принадлежности
  • Операторы тождественности
  • Битовые операторы

Арифметические операторы Python

Этот тип включает операторы для проведения базовых арифметических операций.

Сложение (+)

Складывает значение по обе стороны оператора.
Пример:

>>> 3+4
7  

Вычитание (-)

Вычитает значение правой стороны из значения в левой.
Пример:

>>> 3-4
-1  

Умножение (*)

Перемножает значения с обеих сторон оператора.
Пример:

>>> 3*4
12  

Деление (/)

Делит значение левой стороны на значение правой. Тип данных результата деления — число с плавающей точкой.
Пример:

>>> 3/4
0.75 

Возведение в степень (**)

Возводит первое число в степень второго.
Пример:

>>> 3**4
81

Деление без остатка (//)

Выполняет деление и возвращает целочисленное значение частного, убирая цифры после десятичной точки.
Пример:

>>> 4//3
1
>>> 10//3
3

Деление по модулю (остаток от деления) (%)

Выполняет деление и возвращает значение остатка.
Пример:

>>> 3%4
3
>>> 4%3
1
>>> 10%3
1
>>> 10.5%3
1.5

Операторы сравнения

Операторы сравнения в Python проводят сравнение операндов. Они сообщают, является ли один из них больше второго, меньше, равным или и то и то.

Меньше (<)

Этот оператор проверяет, является ли значение слева меньше, чем правое.
Пример:

>>> 4<3
False

Больше (>)

Проверяет, является ли значение слева больше правого.

Пример:

>>> 4>3
True

Меньше или равно (<=)

Проверяет, является ли левая часть меньше или равной правой.
Пример:

>>> 7<=7
True

Больше или равно (>=)

Проверяет, является ли левая часть больше или равной правой.
Пример:

>>> 0>=0
True

Равно (==)

Этот оператор проверяет, равно ли значение слева правому. 1 равна булевому True, а 2 (двойка) — нет. 0 равен False.
Пример:

>>> 3==3.0
True
>>> 1==True
True
>>> 7==True
False
>>> 0==False
True
>>> 0.5==True
False

Не равно (!=)

Проверяет, не равно ли значение слева правому. Оператор <> выполняет ту же задачу, но его убрали в Python 3.

Когда условие выполнено, возвращается True. В противном случае — False. Это возвращаемое значение можно использовать в последующих инструкциях и выражениях.
Пример:

>>> 1!=1.0
False
>>> 1==True  # Это вызывает SyntaxError

Операторы присваивания

Оператор присваивания присваивает значение переменной. Он может манипулировать значением до присваивания. Есть 8 операторов присваивания: 1 простой и 7 с использованием арифметических операторов.

Присваивание (=)

Присваивает значение справа левой части. Стоит обратить внимание, что == используется для сравнения, а = — для присваивания.
Пример:

>>> a = 7
>>> print(a)
7

Сложение и присваивание (+=)

Суммирует значение обеих сторон и присваивает его выражению слева. a += 10 — это то же самое, что и a = a + 10.

То же касается и все остальных операторов присваивания.
Пример:

>>> a += 2
>>> print(a)
9 

Вычитание и присваивание (-=)

Вычитает значение справа из левого и присваивает его выражению слева.
Пример:

>>> a -= 2
>>> print(a)
7

Деление и присваивание (/=)

Делит значение слева на правое. Затем присваивает его выражению слева.
Пример:

>>> a /= 7
>>> print(a)
1.0

Умножение и присваивание (*=)

Перемножает значения обеих сторон. Затем присваивает правое левому.
Пример:

>>> a *= 8
>>> print(a)
8.0

Деление по модулю и присваивание (%=)

Выполняет деление по модулю для обеих частей. Результат присваивает левой части.
Пример:

>>> a %= 3
>>> print(a)
2.0

Возведение в степень и присваивание (**=)

Выполняет возведение левой части в степень значения правой части. Затем присваивает значение левой части.
Пример:

>>> a **= 5
>>> print(a)
32.0

Деление с остатком и присваивание (//=)

Выполняет деление с остатком и присваивает результат левой части.
Пример:

>>> a //= 3
>>> print(a)
10.0

Это один из важных операторов Python

Логические операторы Python

Это союзы, которые позволяют объединять по несколько условий. В Python есть всего три оператора: and (и), or (или) и not (не).

И (and)

Если условия с двух сторон оператора and истинны, тогда все выражение целиком считается истинным.
Пример:

>>> a = 7 > 7 and 2 > -1
>>> print(a)
False

Или (or)

Выражение ложно, если оба операнда с двух сторон ложные. Если хотя бы одно из них истинное, то и все выражение истинно.
Пример:

>>> a = 7 > 7 or 2 > -1
>>> print(a)
True

Не (not)

Этот оператор инвертирует булевые значения выражения. True превращается в False и наоборот. В примере внизу булево значение 0False. Поэтому оно превращается в True.
Пример:

>>> a = not(0)
>>> print(a)
True

Операторы принадлежности

Эти операторы проверяют, является ли значение частью последовательности. Последовательность может быть списком, строкой или кортежем. Есть всего два таких оператора: in и not in.

В (in)

Проверяет, является ли значение членом последовательности. В этом примере видно, что строки fox нет в списке питомцев. Но cat — есть, поэтому она возвращает True. Также строка me является подстрокой disappointment. Поэтому она вернет True.
Пример:

>>> pets=['dog','cat', 'ferret']
>>> 'fox' in pets
False
>>> 'cat' in pets
True
>>> 'me' in 'disappointment'
True

Нет в (not in)

Этот оператор проверяет, НЕ является ли значение членом последовательности.
Пример:

>>> 'pot' not in 'disappointment'
True

Операторы тождественности

Эти операторы проверяют, являются ли операнды одинаковыми (занимают ли они одну и ту же позицию в памяти).

Это (is)

Если операнды тождественны, то вернется True. В противном случае — False. Здесь 2 не является 20, поэтому вернется False. Но '2' — это то же самое, что и "2". Разные кавычки не меняют сами объекты, поэтому вернется True.
Пример:

>>> 2 is 20
False
>>> '2' is "2"
True

Это не (is not)

2 — это число, а '2' — строка. Поэтому вернется True.
Пример:

>>> 2 is not '2'
True

Битовые операторы Python

Эти операторы работают над операндами бит за битом.

Бинарное И (&)

Проводит побитовую операцию and над двумя значением. Здесь бинарная 2 — это 10, а 311. Результатом побитового and является 10 — бинарная 2. Побитовое and над 011(3) и 100(4) выдает результат 000(0).
Пример:

>>> 2&3
2
>>> 3&4
0

Бинарное ИЛИ (|)

Проводит побитовую операцию or на двух значениях. Здесь or для 10(2) и 11(3) возвращает 11(3).
Пример:

>>> 2|3
3

Бинарное ИЛИ НЕТ (^)

Проводит побитовую операцию xor (исключающее или) на двух значениях. Здесь результатом ИЛИ НЕ для 10(2) и 11(3) будет 01(1).
Пример:

>>> 2^3
1

Инвертирующий оператор (~)

Он возвращает инвертированные двоичные числа. Другими словами, переворачивает биты. Битовая 2 — это 00000010. Ее инвертированная версия — 11111101. Это бинарная -3. Поэтому результат -3. Похожим образом ~1 равняется -2.
Пример:

>>> ~-3
2

Еще раз, инвертированная -3 — это 2.

Бинарный сдвиг влево (<<)

Он сдвигает значение левого операнда на позицию, которая указана справа. Так, бинарная 2 — это 10. 2 << 2 сдвинет значение на две позиции влево и выйдет 1000 — это бинарная 8.
Пример:

>>> 2<<2
8

Бинарный сдвиг вправо (>>)

Сдвигает значение левого оператора на позицию, указанную справа. Так, бинарная 3 — это 11. 3 >> 2 сдвинет значение на два положение вправо. Результат — 00, то есть 0. 3 >> 1 сдвинет на одну позицию вправо, а результатом будет 01 — бинарная 1.
Пример:

>>> 3>>2
>>> 3>>1
1

Выводы

В этом уроке были рассмотрены все 7 типов операторов Python. Для каждого был предложен пример в IDE. Для понимания особенностей работы операторов нужно продолжать с ними работать, использовать в условных конструкциях и объединять.

Содержание:развернуть

  • Операторы сравнения
  • Логические операторы
  • Арифметические операторы
  • Операторы присваивания
  • Побитовые операторы
  • Операторы членства
  • Операторы тождественности
  • Приоритет операторов

Большинство строк программного кода представляют собой выражения. Например: 1 + 2 — это выражение. Выражение состоит из 2 частей:

  • Оператор (+) — функционал, представленный в виде символов (например + ==) или зарезервированных слов (например and not).
  • Операнды (1 и 2) — это данные, над которыми производится действия.

Выражение в Python состоит из оператора и операндов.

После того как Python-интерпретатор вычислит выражение, мы можем, как в примере выше, присвоить результат переменной sum. Или, например, сразу вывести результат на экран:

>>> print(1 + 2)
3

Операторы сравнения

Рассмотрим простой пример — 1 + 2 == 3.

Для проверки истинности данного условия, используется логический тип. Когда мы выполним данное выражение, в результате нам вернется True (истина) или False (ложь).

>>> 1 + 2 == 3
True

В данном примере мы используем один из операторов сравнения — «==» (равно). Всего в Python таких операторов 6:

  • == — равно;
  • != — не равно;
  • > — больше;
  • < — меньше;
  • >= — больше или равно;
  • <= — меньше или равно.

>>> 1 == 2
False
>>> 1 != 2
True
>>> 1 > 2
False
>>> 1 < 2
True
>>> 1 >= 2
False
>>> 1 <= 2
True

Логические операторы

Правила выполнения логических операций соответствуют таблицам истинности. В Python 3 логических оператора:

  • or — логическое «ИЛИ»;
  • and — логическое «И»;
  • not — логическое отрицание.

>>> (1 + 1 == 2) or (2 * 2 == 5)
True
>>> (1 + 1 == 2) and (2 * 2 == 5)
False
>>> (1 + 1 == 2) and not (2 * 2 == 5)
True

Арифметические операторы

Арифметические операторы в Python производят арифметические операции над числами (сложение, вычитание, деление и т.д.);

  • + — сложение;
  • - — вычитание;
  • * — умножение;
  • / — деление;
  • // — целочисленное деление (возвращает только целую часть от деления, значение после запятой отбрасывается);
  • % — деление по модулю (возвращает остаток от деления);
  • ** — возведение в степень.

>>> 1 + 2
3
>>> 1 - 2
-1
>>> 1 * 2
2
>>> 1 / 2
0.5
>>> 10 // 3
3
>>> 10 % 3
1
>>> 3 ** 2
9

Операторы присваивания

Операторы присваивания в Python работаю вполне очевидно — значение находящееся справа присваивается переменной, находящейся слева. Существует несколько разновидностей операторов присваивания:

  • = — значение правого операнда присвоится левому операнду;
  • += — сумма левого и правого операнда присвоится левому операнду;
  • -= — разность левого и правого операнда присвоится левому операнду;
  • *= — произведение левого и правого операнда присвоится левому операнду;
  • /= — разделит левый операнд на правый и результат присвоится левому операнду;
  • //= — результат целочисленного деления левого операнда на правый операнд присвоится левому операнду;
  • %= — разделит левый операнд на правый по модулю и результат присвоится левому операнду;
  • **= — возведет левый операнд в степень правого и результат присвоится левому операнду.

>>> a = 10
>>> print(a)
10

>>> a = 10
>>> a += 1 # аналогично a = a + 1
>>> print(a)
11

>>> a = 10
>>> a -= 2 # аналогично a = a - 2
>>> print(a)
8

>>> a = 10
>>> a *= 2 # аналогично a = a * 2
>>> print(a)
20

>>> a = 10
>>> a /= 2 # аналогично a = a / 2
>>> print(a)
5.0

>>> a = 10
>>> a //= 3 # аналогично a = a // 2
>>> print(a)
3

>>> a = 10
>>> a %= 3 # аналогично a = a % 2
>>> print(a)
1

>>> a = 10
>>> a **= 2 # аналогично a = a ** 2
>>> print(a)
100

Python поддерживает не только обычное присваивание правого операнда левому, но и множественное присваивание.

Множественное присваивание в Python

>>> a, b, c = 1, "python", [1,2,3]
>>> print(a, b, c)
1 python [1, 2, 3]

С помощью такого присваивания можно поменять значения переменных между собой:

>>> a = 1
>>> b = 2
>>> a, b = b, a
>>> print(a, b)
2 1

Также с помощью множественного присваивания можно «распаковывать» строки (str), списки (list), кортежи (tuple) и словари (dict).

Распаковка особенно удобна, когда функция возвращает несколько значений в виде кортежа (tuple):

>>> def test_page():
return 404, "Not found"

>>> code, message = test_page()
>>> print(code, message)
404 Not found

Главное условие распаковки – количество элементов должно совпадать

Если необходимо распаковать лишь несколько элементов, воспользуйтесь переменной со знаком «*«:

>>> text = "deactivate"
>>> first, second, *other_letters = text
>>> print(first, second, other_letters)
d e ['a', 'c', 't', 'i', 'v', 'a', 't', 'e']

Побитовые операторы

Данные операторы предназначены для работы с данными в битовом (двоичном) формате. Про битовые операции смотрите статью на википедии.

  • ~ — побитовое отрицание (для него требуется только один операнд);
  • & — побитовое «И«;
  • | — побитовое «ИЛИ«;
  • ^ — исключающее «ИЛИ«;
  • << — побитовый сдвиг влево;
  • >> — побитовый сдвиг вправо.

Пример побитовых операций в Python.

>>> a = 11
>>> b = 34

>>> a & b
2
>>> a | b
43
>>> (a ^ b)
41
>>> ~a
-12
>>> a << 1
22
>>> a >> 2
5

Операторы членства

В Python существует всего 2 оператора принадлежности — in и not in и предназначены они для проверки наличия элемента в строке (str), списке (list), словаре (dict) или кортеже (tuple).

  • in — возвращает True если элемент присутствует в последовательности;
  • not in — возвращает True если элемент отсутствует в последовательности.

>>> "host" in "host=local"
True
>>> 2 in [1,2,4,5]
True
>>> "one" in {"one": 1, "two": 1} # в словаре проверка по ключам
True
>>> True in ("string", 2, True)
True
>>> "str" not in ("string", 2, True)
True

Операторы тождественности

Данные операторы сравнивают размещение двух объектов в памяти.

  • is — возвращает True если оба операнда указывают на один и тот же объект;
  • is not — возвращает True если оба операнда указывают на разные объекты.

>>> x = 5
>>> type(x) is int
True

>>> x = 5.1
>>> type(x) is int
False

>>> x = [1, 2, 3] # id(x) = 64620552
>>> y = [1, 2, 3] # id(y) = 60529960
>>> x is y
False

Приоритет операторов

Таблица приоритетов операторов в Python показана ниже.

Таблица приоритетов выполнения операторов в Python.

Элементы отсортированы по убыванию, с высокого приоритета к более низкому. В комбинациях с несколькими операторами, оператор с большим приоритетом выполняется первым.

Например, в выражении 1 + 2 ** 2 * 10 сначала выполнится возведение в степень, далее умножение, потом сложение. Итого результат: 41.

В этом уроке вы узнаете все о разных типах операторов в Python, их синтаксисе и примерах использования.

Что такое операторы

Операторы — специальные символы, которые выполняют арифметические и логические вычисления. Значения, на которые действует оператор, называются операндами. 

Например:

>>> 2+3
5

Здесь оператор + выполняет сложение, 2 и 3 — операнды, а 5 — вывод операции.

Арифметические операторы

Арифметические операторы используются для выполнения математических операций — сложения, вычитания, умножения и т. д.

Оператор

Действие

Пример

+

Сложение двух операндов или унарный плюс

x + y + 2

Вычитание правого оператора из левого или унарный минус

x — y- 2

*

Умножение двух операндов

x * y

/

Деление левого операнда на правый (результат всегда типа float)

x / y

%

Остаток от деления левого операнда на правый

x % y (остаток от x / y)

//

Деление с округлением — деление, результат которого корректируется в меньшую сторону

x // y

**

Показатель степени — левый операнд возводится в значение правого операнда

x**y

x = 15
y = 4

# Вывод: x + y = 19
print('x + y =', x+y)

# Вывод: x - y = 11
print('x - y =', x-y)

# Вывод: x * y = 60
print('x * y =', x*y)

# Вывод: x / y = 3.75
print('x / y =', x/y)

# Вывод: x // y = 3
print('x // y =', x//y)

# Вывод: x ** y = 50625
print('x ** y =', x**y)

Вывод:

x + y = 19
x - y = 11
x * y = 60
x / y = 3.75
x // y = 3
x ** y = 50625

Операторы сравнения

Операторы сравнения используются для сравнения значений, они возвращают True или False в зависимости от условия.

Оператор

Действие

Пример

>

Больше чем: True, если левый операнд больше правого

x > y

<

Меньше чем: True, если левый операнд меньше правого

x < y

==

Равно: True, если операнды равны между собой

x == y

!=

Не равно: True, если операнды не равны между собой

x != y

>=

Больше или равно: True, если левый операнд больше или равен правому

x >= y

<=

Меньше или равно: True, если левый операнд меньше или равен правому

x <= y

x = 10
y = 12

# Вывод: x > y — False
print('x > y —', x>y)

# Вывод: x < y — True
print('x < y —', x<y)

# Вывод: x == y — False
print('x == y —', x==y)

# Вывод: x != y — True
print('x != y —', x!=y)

# Вывод: x >= y — False
print('x >= y —', x>=y)

# Вывод: x <= y — True
print('x <= y —', x<=y)

Вывод:

x > y — False
x < y — True
x == y — False
x != y — True
x >= y — False
x <= y — True

Логические операторы

Операторы and, or, not — логические.

Оператор

Действие

Пример

and

True, если значения обоих операндов True

x and y

or

True, если значение одного из операндов True

x or y

not

True, если значение операнда False (дополняет значение операнда)

not x

x = True
y = False

print('x and y —', x and y)
print('x or y —', x or y)
print('not x —', not x)

Вывод:

x and y — False
x or y — True
not x — False

Побитовые операторы

Побитовые операторы работают с операндами как со строками из 0 и 1. Они действуют бит за битом, как и говорит название.

Например, 2 в двоичной системе счисления — 10, а 7 — 111.

В таблице ниже: x = 10 (00001010 в двоичной системе счисления) и y = 4 (00000100 в двоичной системе счисления)

Оператор

Действие

Пример

&

Побитовое И

x & y = 0 (00000000)

|

Побитовое ИЛИ

x | y = 14 (00001110)

~

Побитовое НЕ

~x = -11 (11110101)

^

Побитовое XOR

x ^ y = 14 (00001110)

>>

Побитовый сдвиг вправо

x >> 2 = 2 (00000010)

<<

Побитовый сдвиг влево

x << 2 = 40 (00101000)

Операторы присваивания

Операторы присваивания используются для назначения переменной некоторого значения. 

a = 5 — простой оператор присваивания, который приравнивает значение 5 справа переменной а слева.

В Python множество составных операторов, подобных a += 5 — он прибавляет 5 к переменной a и позже присваивает ей получившееся значение. Этот оператор равносилен записи a = a + 5.

Оператор

Пример

Эквивалентно

=

x = 5

x = 5

+=

x += 5

x = x + 5

-=

x -= 5

x = x — 5

*=

x *= 5

x = x * 5

/=

x /= 5

x = x / 5

%=

x %= 5

x = x % 5

//=

x //= 5

x = x // 5

**=

x **= 5

x = x ** 5

&=

x &= 5

x = x & 5

|=

x |= 5

x = x | 5

^=

x ^= 5

x = x ^ 5

>>=

x >>= 5

x = x >> 5

<<=

x <<= 5

x = x << 5

Особые операторы

В Python есть особые типы операторов: операторы тождественности и принадлежности.

Операторы тождественности

is и is not — операторы тождественности в Python. Они проверяют, находятся ли два значения (или две переменные) по одному адресу в памяти. То, что две переменные равны еще не значит, что они идентичны.

Оператор

Действие

Пример

is

True, если операнды идентичны (указывают на один объект)

x is True

is not

True, если операнды не идентичны (не указывают на один объект)

x is not True

x1 = 5
y1 = 5
x2 = 'Привет'
y2 = 'Привет'
x3 = [1,2,3]
y3 = [1,2,3]

# Вывод: False
print(x1 is not y1)

# Вывод: True
print(x2 is y2)

# Вывод: False
print(x3 is y3)

Вывод:

False
True
False

Мы видим, что x1 и y1 — целочисленные переменные с одинаковыми значениями, поэтому они равны и идентичны. То же с x2 и y2 (строки).

Но x3 и y3 — списки. Они равны, но не идентичны, поскольку интерпретатор кладет их в разные места в памяти, хоть эти списки и равны.

Операторы принадлежности

in и not in — операторы принадлежности в Python. Они проверяют, есть ли значение или переменная в последовательности (строке, списке, кортеже, множестве или словаре). Иначе говоря, проверяют вхождение элемента в коллекцию. В словаре можно проверить только присутствие ключа, не значения.

Оператор

Действие

Пример

in

True, если значение или переменная есть в последовательности

5 in x

not in

True, если значения или переменной нет в последовательности

5 not in x

x = 'Привет, мир'
y = {1:'a',2:'b'}

# Вывод: True
print('П' in x)

# Вывод: True
print('привет' not in x)

# Вывод: True
print(1 in y)

# Вывод: False
print('б' in y)

Вывод:

True
True
True
False

'П' есть в x, а вот строки 'привет' в x нет (помните: Python чувствителен к регистру). Таким же образом образом 1— ключ, а 'a' — значение в словаре y, поэтому вывод 'б' in yFalse.

Python – весьма перспективный язык программирования, который набирает популярность. Он позволяет создавать функциональный контент совершенно разного направления: от бизнес-софта до развлекательных утилит. Достаточно прост в изучении и освоении с нуля.

Погружаясь в основы Python, нельзя забывать о таком важном моменте, как операторы. Именно о них зайдет речь далее. Вниманию будут представлены логические операторы Python, а также иные их варианты. Эта информация пригодится не только новичкам в сфере разработке, но и опытным программистам.

Немного терминологии

Python является язык общего назначения. Он включает в себя принципы объектно-ориентированного программирования. Поэтому перед тем, как изучать операторы и их нюансы, стоит запомнить несколько ключевых терминов. Без них создать качественное приложение не представляется возможным:

  1. Алгоритм – своеобразный набор правил и инструкций. Он необходим для обработки функций и выполнения тех или иных задач.
  2. API – интерфейс прикладного программирования. Включает в себя структурные данные, протоколы и правила, позволяющие быстро разрабатывать ПО, а также налаживать его взаимодействие с разного рода службами.
  3. Переменные – именованные ячейки памяти. Они резервируются системой с учетом типа используемых данных в исходном коде.
  4. Константа – постоянное значение. Оно не подлежит никаким корректировкам на протяжении всего жизненного цикла софта.
  5. Аргумент – значение, которое передается в команду или функцию.
  6. Объекты – наборы связанных между собой переменных, констант и иных структурных данных, выбираемых и обрабатываемых совместно.
  7. Классы – перечни связанных объектов. Наделяются общими свойствами.
  8. Итерация – один проход через команду или функцию в коде.

Отдельно стоит выделить такие понятия как «оператор» и «операнд». Первый термин указывает на объект, умеющий управлять операндами. Для этого задействуются специальные символы и записи (функции). Операнд – объект, которым можно манипулировать через так называемые операторы.

Основные операторы

Оператор в Питоне – символ, который будет отвечать за выполнение операции над одним или сразу несколькими операндами. Последним компонентом будет выступать переменная или значение, с которой требуется проводить дальнейшую работу.

Всего в рассматриваемом ЯП несколько типов операторов:

  • арифметические;
  • сравнения;
  • присваивания;
  • логические;
  • принадлежности;
  • битовые;
  • тождественные.

Все перечисленные операторы отвечают за различные операции, проводимые при обработке программного кода. Без них представить даже элементарную программу не получится. Поэтому далее каждый тип рассмотрен более подробно.

Арифметические

Арифметические операторы в Python – самые простые. Данная категория «команд» встречается даже новичкам. С ними знакомятся еще в школьной программе. Они отвечают за элементарные математические действия.

Сюда относят:

  1. Сложение (+). Производит сложение значений по обе стороны «команды».
  2. Вычитание (-). Осуществляет вычитание правой стороны из значения левой в заданном выражении.
  3. Умножение (*). Перемножает написанное с обеих сторон выражения.
  4. Деление (/). Делит левый операнд на правый. Тип информации результата – это число с плавающей точкой.
  5. Возведение в степень (**). Отвечает за возведение первого написанного числа в степень второго у заданной функции.
  6. Деление без остатка (//). Производит деление согласно установленным математическим правилам. После этого возвращает значение, оставляя только целочисленную часть от полученного частного. Все, что идет после десятичной точки, система отбросит.
  7. Остаток от деления (%). Эта операция также называется делением по модулю. При ее использовании происходит «раздел» и возврат значения остатка.

Все это должен знать даже школьник. А у разработчика подобная категория манипуляций вообще не вызывает никаких трудностей.

Сравнение

Операторы сравнения отвечают за проверку заданного в приложении равенства. Они указывают, каким является один из операндов:

  1. Меньше (<). True присваивается, если показатель слева меньше, чем справа.
  2. Больше (>). True на выходе будет получено, когда «условия» слева больше правого.
  3. Меньше или равно (<=). Выдает на выходе истину, если левая часть меньше или такая же, как правая.
  4. Больше или равно (>=). True устанавливается, если левая часть записи окажется больше или аналогичной правой.
  5. Равно (==). В данном случае происходит проверка на непосредственное равенство. Если параметр слева такой же, как справа, на выходе получится true. В противном случае – False.
  6. Не равно (!=). Оператор, который убран в Питоне 3. Он проверяет, не равен ли параметр слева правому. При успешном выполнении условия приложение выдаст True.

Здесь в основном придется учитывать результат в виде True и False. Перечисленные манипуляции тоже достаточно активно используются в разработке софта.

Присваивание

Операторы присваивания будут отвечать за передачу переменной того или иного значения. Тут нет true или false. Данная категория включает в себя:

  1. Обычное присваивание (=). Параметр справа передается левой части.
  2. Сложение и присваивание (+=). Суммирует параметры с обеих сторон и передает результат левой части.
  3. Вычитание и присваивание (-=). Из правого вычитается «левое». Далее последнему передается соответствующий результат.
  4. Деление и присваивание (/=).
  5. Умножение и присваивание (*=).
  6. Деление по модулю и присваивание (%=).
  7. Возведение в степень и присваивание (**=).
  8. Деление с остатком и присваивание (//=).

Последний является одним из самых важных в Питоне.

Логические операторы

Логические операторы выполняют роль своеобразных союзов. Они будут выдавать на выходе True или False. Дают возможность объединения нескольких условий в единое целое:

  1. И (and). Если написанное с двух сторон оператора – это true, то и все выражение окажется true.
  2. Или (or). Результат «ложь» выводится тогда, когда два операнда false. В противном случае – true.
  3. Не (not). Работает с булевыми значениями. True становится False. Обратное соотношение тоже действует.

Других логических операторов в рассматриваемом языке программирования нет.

Принадлежность

Зато есть операторы принадлежности. Они проверяют, является ли значение частью заданной последовательности: списка, кортежа, строки:

  1. В (in). Осуществляет проверку на принадлежность к последовательности. Возвращает True при соответствии указанному условию.
  2. Нет в (not in). Проводит проверку на НЕ принадлежность к последовательности.

Других операторов в данной категории нет.

Тождественность

Операторы тождественности проверяют, являются ли операнды одинаковыми. На практике встречаются не слишком часто:

  1. Это (is). Если тождественность есть, осуществляется возврат True.
  2. Это нет (is not).

Остается изучить последнюю крупную категорию операторов в Питоне.

Битовые операторы

Осуществляют работу над операндами побитово. Здесь можно увидеть:

  1. Бинарное И (&). Отвечает за побитовую операцию and.
  2. Или (|). Побитово проводит or.
  3. Или нет (^). Это – исключающее или (XOR).
  4. Инвертирующий оператор (~). Возвращает инвертированные двоичные числа. Будет переворачивать биты.
  5. Сдвиг влево (<<). Сдвигает на позицию, указанную справа, левого операнда.
  6. Сдвиг вправо (>>).

Теперь понятно, какие есть операнды и операции над ними в Питоне. А лучше изучить их на практике помогут компьютерные онлайн курсы.

В этой статье мы поговорим про различные операторы в Python. Мы на примерах разберем арифметические, битовые и логические операторы, а также операторы присваивания и сравнения. Кроме того, мы рассмотрим операторы принадлежности и идентичности, такие как is, is not и in, not in.

Арифметические операторы

Python реализует семь основных бинарных арифметических операторов, два из которых могут использоваться как унарные операторы. Они приведены в следующей таблице:

Оператор Название Описание
a + b Сложение Сумма a и b
a — b Вычитание Разность a и b
a * b Умножение Произведение a и b
a / b Деление Частное a и b
a // b Целочисленное деление Деление a на b без остатка (дробная часть отбрасывается)
a % b Взятие модуля Целый остаток от деления a на b
a ** b Возведение в степень a, возведенное в степень b
-a Отрицание Отрицательное значение a
+a Унарный плюс а без изменений (используется редко)

Эти операторы можно использовать и комбинировать интуитивно понятным образом, используя стандартные круглые скобки для группировки операций. К примеру, это может выглядеть так:

# сложение, вычитание, умножение
(4 + 8) * (6.5 - 3)
# 42.0

Целочисленное деление — это обычное деление, только с усечённой дробной частью:

# Деление
print(11 / 2)
# 5.5
# Целочисленное деление
print(11 // 2)
# 5

Оператор целочисленного деления был добавлен в Python 3. Если вы работаете в Python 2, вы должны знать, что стандартный оператор деления (/) действует как оператор целочисленного деления для целых чисел и как обычный оператор деления для чисел с плавающей запятой.

Наконец, упомянем ещё один арифметический оператор, который был добавлен в Python 3.5. Это оператор a @ b, предназначенный для указания матричного произведения a и b для использования в различных пакетах линейной алгебры.

[python_ad_block]

Битовые операторы

В дополнение к стандартным числовым операциям в Python есть операторы для выполнения побитовых логических операций над целыми числами. Они используются гораздо реже стандартных арифметических операций, но знать их полезно. Шесть побитовых операторов сведены в следующую таблицу:

Оператор Название Описание
a & b Логическое И Биты, определенные как в a, так и в b
a | b Логическое ИЛИ Биты, определенные в a или b или в обоих
a ^ b Исключающее ИЛИ Равен 1, если только a или только b равно 1
a << b Побитовый сдвиг влево Сдвинуть биты a влево на b единиц
a >> b Побитовый сдвиг вправо Сдвинуть биты a вправо на b единиц
~a Логическое НЕ Отрицание a

Эти побитовые операторы имеют смысл только с точки зрения двоичного представления чисел. Это можно увидеть, используя встроенную функцию bin:

bin(10)
# '0b1010'

Результат имеет префикс 0b, что указывает на двоичное представление. Остальные цифры означают, что число 10 выражается как сумма 1⋅23+0⋅22+1⋅21+0⋅20. Точно так же мы можем написать:

bin(4)
# '0b100'

Теперь, используя логическое ИЛИ, мы можем найти число, которое объединяет биты 4 и 10:

4 | 10
# 14
bin(4 | 10)
# '0b1110'

Эти побитовые операторы не так полезны, как стандартные арифметические операторы, но стоит увидеть их хотя бы раз, чтобы понять, какой класс операций они выполняют. В частности, у пользователей других языков иногда возникает соблазн использовать исключающее ИЛИ (т. е. a ^ b), на самом деле имея в виду возведение в степень (т. е. a ** b).

Операторы присваивания

Мы видели, что переменным можно присваивать значение с помощью оператора =. Например, следующим образом:

a = 24
print(a)
# 24

Мы можем использовать эти переменные в выражениях с любым из упомянутых ранее операторов. Например, чтобы добавить 2 к a, мы пишем:

a + 2
# 26

Мы можем захотеть обновить переменную a новым значением. В этом случае мы могли бы объединить сложение и присваивание и написать a = a + 2. Поскольку этот тип комбинированной операции и присваивания очень распространен, Python включает встроенные операторы обновления для всех арифметических операций:

a += 2  # эквивалентно a = a + 2
print(a)
# 26

Расширенный оператор присваивания есть для каждого из бинарных операторов, перечисленных ранее. Они выглядят следующим образом:

a += b    a -= b    a *= b    a /= b

a //= b    a %= b    a **= b    a &= b

a |= b    a ^= b    a <<= b    a >>= b

Каждый из этих операторов эквивалентен применению соответствующего оператора с последующим присваиванием. То есть для любого оператора выражение a ■= b эквивалентно a = a ■ b с небольшой оговоркой.

Для изменяемых объектов, таких как списки, массивы или датафреймы, эти расширенные операции присваивания на самом деле немного отличаются от своих более подробных аналогов. Они изменяют содержимое исходного объекта, а не создают новый объект для хранения результата. Но это тонкости, в целом же укороченная версия работает так же, как и полная, но экономит кучу вашего времени.

Операторы сравнения

Другой тип операций, который может быть очень полезным, — это сравнение различных переменных. Для этого в Python реализованы стандартные операторы сравнения, которые возвращают логические значения True или False. Операции сравнения представлены в следующей таблице:

Оператор Описание
a == b a равняется b
a < b a строго меньше чем b
a <= b a меньше либо равно b
a != b a не равняется b
a > b a строго больше чем b
a >= b a больше либо равно b

Эти операторы сравнения можно комбинировать с арифметическими и побитовыми операторами, чтобы осуществлять самые разнообразные операции над числами. Например, мы можем проверить, является ли число нечетным, проверив, что остаток от деления на 2 возвращает 1:

# 25 - нечетное число
25 % 2 == 1
# True
# 66 - нечетное число
66 % 2 == 1
# False

Мы можем объединить несколько сравнений, чтобы проверить более сложные отношения:

# проверяем, находится ли a между 15 и 30
a = 25
15 < a < 30
# True

И, чтобы у вас немного закружилась голова, взгляните на это сравнение:

-1 == ~0
# True

Напомним, что ~ — это оператор инвертирования битов, и, очевидно, когда вы инвертируете все биты нуля, вы получите -1. Если вам интересно, почему это так, посмотрите схему кодирования целых чисел с дополнением до двух, которую Python использует для кодирования целых чисел со знаком, и подумайте, что происходит, когда вы начинаете переворачивать все биты целых чисел, закодированных таким образом.

От редакции Pythonist: об операторе != можно почитать в статье «Оператор неравенства != в Python».

Логические операторы

При работе с логическими значениями Python предоставляет операторы для объединения значений с использованием стандартных понятий «и», «или» и «не». Эти операторы ожидаемо представлены словами and, or и not:

x = 4
(x < 6) and (x > 2)
# True
(x > 10) or (x % 2 == 0)
# True
not (x < 6)
# False

Поклонники булевой алгебры могут заметить, что оператор исключающего ИЛИ не включен. Он, конечно, может быть построен несколькими способами путем составления других операторов. Или же вы можете использовать хитрый трюк:

# (x > 1) xor (x < 10)
(x > 1) != (x < 10)
# False

Иногда в языке возникает путаница: когда использовать логические операторы (and, or, not), а когда побитовые (&, |, ~). Ответ кроется в их названиях: логические операторы следует использовать, когда вы хотите вычислить логические значения (т.е. истинность или ложность) утверждений. Побитовые операции следует использовать, когда вы хотите работать с отдельными битами или компонентами рассматриваемых объектов.

Операторы принадлежности и идентичности

Помимо and, or и not, Python также имеет операторы для проверки принадлежности и идентичности. Они следующие:

Оператор Описание
a is b Возвращает True, если a и b — идентичные объекты
a is not b Возвращает True, если a и b — не идентичные объекты
a in b Возвращает True, если a содержится в b
a not in b Возвращает True, если a не содержится в b

Операторы is и is not проверяют идентичность объекта. Идентичность объекта отличается от равенства, как мы видим здесь:

a = [1, 2, 3]
b = [1, 2, 3]
a == b
# True
a is b
# False
a is not b
# True

Как выглядят одинаковые объекты? Вот пример:

a = [1, 2, 3]
b = a
a is b
# True

Разница между этими двумя случаями в том, что в первом a и b указывают на разные объекты, а во втором они указывают на один и тот же объект. Оператор is проверяет, указывают ли две переменные на один и тот же контейнер (объект), а не на то, что содержит контейнер.

Новички часто испытывают искушение использовать is, хотя на самом деле имеют в виду ==. Подробнее о разнице между == и is можно почитать в статье «Чем == отличается от is?«.

Операторы принадлежности проверяют принадлежность к составным объектам. Так, например, мы можем написать:

1 in [1, 2, 3]
# True
2 not in [1, 2, 3]
# False

Эти операции членства являются примером простоты Python по сравнению с языками более низкого уровня, такими как C. В языке C членство обычно определяется путем ручного построения цикла по списку и проверки равенства каждого значения. В Python вы просто печатаете то, что хотите узнать, в манере, напоминающей простой текст.

Заключение

Итак, сегодня мы разобрали на примерах различные операторы в Python. Надеемся вам было полезно! Успехов в написании кода!

Перевод статьи «Basic Python Semantics: Operators».

Содержание:

  • Общие сведения об операторах сравнения;
  • Поведение встроенных типов в операциях сравнения;
  • Подводные камни (ловушки цепочек сравнения);
    • Нетранзитивные операторы сравнения;
    • Непостоянное значение в выражении;
    • Плохо читаемые цепочки сравнения;
  • Примеры использования цепочек сравнения;

Общие сведения об операторах сравнения.

Разрешенные операции сравнения

:

  • x < y — строго x меньше y,
  • x <= yx меньше или равно y,
  • x > y — строго x больше y,
  • x >= yx больше или равно y,
  • x == yx равно y,
  • x != yx не равно y.

Сравнения могут быть связаны произвольно и записаны в цепочки сравнений, в которых для соединения сравнений используются неявные логические операторы and.

x < y <= z
# эквивалентно 
x < y and y <= z

В примере выше y вычисляется только один раз. Если x < y оказывается ложным, то в обоих случаях, приведенных выше z не оценивается вообще.

Еще пример:

a < b <= c < d
# эквивалентно 
a < b and b <= c and c < d

В такой форме сравнения легче читаются, и каждое подвыражение вычисляется по крайней мере один раз.

Объекты разных типов, за исключением различных числовых типов, никогда не будут равными.

Оператор == всегда определен, но для некоторых типов объектов, например объектов класса, эквивалентен оператору идентичности is.

Операторы <, <=, > и >= применяются только там, где они имеют смысл, например они вызывают исключение TypeError, когда один из аргументов является комплексным числом.

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

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

Поведение встроенных типов в операциях сравнения:

  • Числа встроенных числовых типов int, float, complex и стандартных библиотечных типов fractions.Fraction и decimal.Decimal можно сравнивать внутри и между их типами, с ограничением, что комплексные числа не поддерживают сравнение порядка. В пределах задействованных типов они сравнивают математически (алгоритмически) правильно без потери точности.

    Нечисловые значения float('NaN') и decimal.Decimal('NaN') являются особыми. Любое упорядоченное сравнение числа с нечисловым значением неверно. Нечисловые значения не равны самим себе. Например, если x = float('NaN'), 3 < x, x < 3 и x == x все ложны, а x! = X истинно. Это поведение соответствует стандарту IEEE 754.

  • None и NotImplemented являются одиночными. PEP 8 советует, что сравнения для одиночных экземпляров всегда должны выполняться с использованием или нет, а не с операторами равенства.

  • Двоичные последовательности (экземпляры bytes или bytearray) можно сравнивать внутри и между их типами. Они сравнивают лексикографически, используя числовые значения своих элементов.

  • Строки (экземпляры str) сравниваются лексикографически с использованием числовых кодовых точек Unicode (результат встроенной функции ord()) их символов.

    Строки и двоичные последовательности напрямую сравнивать нельзя.

  • Последовательности (экземпляры tuple, list или range) можно сравнивать только в пределах каждого из их типов с ограничением, что диапазоны range не поддерживают сравнение порядка (сортировку). Оператор == между этими типами приводит к неравенству, а сравнение порядка между этими типами вызывает исключение TypeError.

    Последовательности сравнивают лексикографически с помощью сравнения соответствующих элементов. Встроенные контейнеры обычно предполагают, что идентичные объекты равны самим себе. Это позволяет им обходить тесты на равенство для идентичных объектов, чтобы повысить производительность и сохранить свои внутренние инварианты.

    Лексикографическое сравнение встроенных коллекций работает следующим образом:

    • Чтобы две коллекции были равными, они должны быть одного типа, иметь одинаковую длину и каждая пара соответствующих элементов должна быть равной. Например [1,2] == (1,2) ложно, потому что типы последовательностей разные.

    • Коллекции, поддерживающие сравнение порядка (сортировку), упорядочиваются также, как их первые неравные элементы, например [1,2, x] <= [1,2, y] имеет то же значение, что и x <= y. Если соответствующий элемент не существует, то более короткая коллекция при сортировке встанет первой, например [1,2] < [1,2,3] истинно).

  • Множества (экземпляры set или frozenset) можно сравнивать внутри и между их типами.

    Они определяют операторы сравнения порядка для обозначения тестов подмножества и надмножества. Эти отношения не определяют общий порядок. Например два множества {1,2} и {2,3} не равны, ни подмножества друг друга, ни надмножества друг друга. Соответственно, наборы не являются подходящими аргументами для функций, которые зависят от общего упорядочения. Например min(), max() и sorted() дают неопределенные результаты при наличии списка множеств в качестве входных данных.

  • Большинство других встроенных типов не имеют реализованных методов сравнения, поэтому они наследуют поведение сравнения по умолчанию.

Подводные камни (ловушки цепочек сравнения).

Несмотря на то, что цепочки сравнения выглядят очень разумно, есть пара подводных камней, на которые необходимо обратить внимание.

Нетранзитивные операторы.

Чтобы проверить, совпадают ли a, b и c, можно использовать цепочку сравнения a == b == c. А как проверить,

ВСЕ

ли они разные? Первое, что приходит в голову — это a != b != c, и мы попадаем в первую ловушку!

>>> a = c = 1
>>> b = 2
>>> a != b != c
# True

Но это не так… Они не все разные, ведь a == c. Проблема здесь в том, что a != b != c — это a != b andb != c, что проверяет, чтоbотличается отaи отc, но ничего не говорит о том, как связаныaиc`.

С математической точки зрения, != не является транзитивным, т. е. знание того, как a относится к b, и знание того, как b относится к c, не говорит о том, как a относится к c. Что касается транзитивного примера, можно взять оператор равенства ==. Если a==b andb == c, то также верно, чтоa == c`.

Непостоянное значение в выражении.

Напомним, что в цепочке сравнений, таких как a < b < c, значение b в середине выражения вычисляется только один раз, тогда как в расширенном выражении a < b and b < c значение b вычисляется дважды.

Если b содержит что-то непостоянное или выражение с побочными эффектами, то эти два выражения не эквивалентны.

Этот пример показывает разницу в количестве оценок значения в середине выражения:

def f():
    print("run")
    return 3

>>> 1 < f() < 5
# run
# True
>>> 1 < f() and f() < 5
# run
# run
# True

Следующий пример показывает, что выражение типа 1 < f() < 0 может принимать значение True, когда оно записано развернуто:

lst = [-2, 2]

def f():
    global lst
    lst = lst[::-1]
    return lst[0]

>>> 1 < f() and f() < 0
# True
>>> 1 < f() < 0
# False

Синтаксис lst[::-1] — это срез, который переворачивает список.

Конечно, 1 < f () < 0 никогда не будет быть истинным, пример просто показывает, что цепочка сравнения и развернутое сравнение не всегда эквивалентны.

Плохо читаемые цепочки сравнения.

Цепочки сравнения выглядят действительно естественно, но в некоторых конкретных случаях она не так хороша. Это довольно субъективный вопрос, но лучше избегать цепочки, в которых операторы не «выровнены«, например:

  • a < b > c;
  • a <= b > c;
  • a < b >= c;

Можно утверждать, например, что a < b > c читается как «проверим, b больше, чем a и c?«, но лучше эту цепочку записать так max(a, c) < b или b > max(a, c).

Есть некоторые другие цепочки, которые просто сбивают с толку:

  • a < b is True;
  • a == b in lst;
  • a in lst is True;

В Python операторы is, is not, in и not in являются операторами сравнения, следовательно их также можно связать с другими операторами. Это создает странные ситуации, такие как:

>>> a = 3
>>> lst = [3, 5]
>>> a in lst == True
# False

Примеры использования цепочек сравнения.

>>> a = 1
>>> b = 2
>>> c = 3
>>> a < b < c
# True

Когда Python видит два оператора сравнения подряд, как в a < b < c, он ведет себя так, как если бы было написано что-то вроде a < b and b < c, за исключением того, что b вычисляется только один раз. Такое поведение актуально, если, например, b является выражением, подобным вызову функции.

Другой пример использования — когда необходимо убедиться, что все три значения одинаковы:

>>> a = b = 1
>>> c = 2
>>> if a == b == c:
...     print("все равны")
... else:
...     print("некоторые отличаются")

# некоторые отличаются

>>> c = 1
>>> if a == b == c:
...     print("все равны")
... else:
...     print("некоторые отличаются")

# все равны

На самом деле можно связать произвольное количество операторов сравнения в цепочку? Например, a == b == c == d == e проверяет, совпадают ли все пять переменных, в то время как a < b < c < d < e проверяет, есть ли строго возрастающая последовательность.

Числа типа float не являются десятичными дробями и используют двоичную арифметику, поэтому иногда выражения могут вычисляться с ничтожно малыми погрешностями. Из-за этих погрешностей операции сравнения работают не так как ожидается.

>>> 0.8 - 0.5 - 0.3 == 0 
# False
>>> 0.8 - 0.5 - 0.3
# 5.551115123125783e-17

>>> 10.5 + 4.1 + 6.4 == 21
True
>>> 10.5 + 4.1 + 6.4
# 21.0

  • Как пишется в питере или в питере
  • Как пишется в письме до свидания
  • Как пишется в периоде в математике
  • Как пишется в первую очередь слитно или раздельно
  • Как пишется в паспорте семейное положение