Определение арифметических, реляционных, побитовых, логических операций, операций присваивания, принадлежности и идентификации.

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

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

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

Операции сложения, вычитания и умножения работают как положено:

>>> 10 + 10
20

>>> 7 - 5
2

>>> 5 * 5
25

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

>>> 10 - 9.5
0.5

>>> 10 + 5.0
15.0

Далее, самое интересное здесь — операция деления. Операция деления (/) всегда будет возвращать число с плавающей запятой, тогда как операция деления на целое число (//) всегда будет возвращать целочисленное значение [1].

>>> 50 / 20
2.5

>>> 50 // 20
2

Целочисленное деление также известно как деление пола, потому что оно всегда принимает меньшее значение или округляет значение в меньшую сторону. Python не использует ^ для возведения в степень, но использует ** для возведения в степень. Знак ^ в Python — это побитовый оператор XOR [3].

>>> 4 ** 2
16

>>> 4 ^ 2
6

Наконец, есть оператор модуля, который представлен %. Оператор модуля возвращает остаток от деления.

>>> 15 % 5
0

>>> 10 % 7
3

Результатом 15 % 5 будет 0, потому что 0 — это остаток от деления 15 на 5. Это также относится к 10 % 7, что приведет к 3, потому что 3 — это остаток.

Еще одна вещь, на которую стоит обратить внимание, это порядок операций. Сначала выполняется возведение в степень, затем умножение и деление (включая // и %), а последними — сложение и вычитание. Если вы хотите изменить порядок выполнения, используйте круглые скобки (()), чтобы сгруппировать их.

>>> (25 - 10 + 5) ** 2
400

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

Операторы сравнения или операторы отношения используются для сравнения значений. Каждый раз, когда мы выполняем операцию сравнения, она возвращает логическое значение (True или False). В отличие от арифметических операций, операции сравнения в Python имеют одинаковый приоритет или порядок выполнения [2]. В python есть восемь операций сравнения, более подробную информацию можно увидеть в следующей таблице.

Операция сравнения работает, как и ожидалось, но символы Python отличаются от математических символов. Если символ уравнения в математике — =, но в Python мы используем ==, потому что = — это оператор присваивания [3].

>>> 10 == 10
True

>>> 7 != 10
True

>>> 20 < 15
False

>>> 20 >= 30
False

Мы также можем сравнить два разных типа данных, но это применимо только к ==, иначе будет возвращена ошибка.

>>> 5 == 'five'
False

>>> 5 <= 'five'
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: '<=' not supported between instances of 'int' and 'str'

Мы также можем выполнять операции сравнения цепочек.

>>> 6 > 3 > 10
False

>>> 5 > 10 > 3
False

Здесь есть на что обратить внимание, если мы будем выполнять операцию сравнения цепочек. В примере 6 > 3 > 10 возвращает False, потому что 6 > 3 оценивается первым, а когда возвращается True , тогда будет оцениваться 6 > 10. Если 6 > 3 возвращает False, то 6 > 10 не будет оцениваться. Когда одно сравнение возвращает False, выражение возвращается к False и пропускает все остальные сравнения.

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

Логические или логические операторы используются для выполнения логических операций, используемых для объединения условных операторов, и возвращают True или False. В Python есть 3 логических оператора: and, or и not.

>>> x = True
>>> y = False
>>> x and Y
False

>>> x or y
True

>>> not x
False

Оператор and вернет True, если оба значения равны True, оператор or вернет True, если одно из значений равно True, а оператор not вернет True, если операнд равен False, или наоборот.

По сравнению с фрагментами кода, которые они сравнивают, логические операторы имеют более низкий приоритет. Другими словами, сначала вычисляются фрагменты, а затем выполняется сравнение [4].

>>> 5 > 10 and 10 == 10
False

Этот пример 5 > 10 оценивается первым, затем будет оцениваться 10 == 10 и после этого будут оцениваться результаты обоих (False and True). Но чтобы код было легче читать и не возникало путаницы с приоритетом, стоит добавить скобки.

>>> (True and False) or (False and True)
False

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

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

Оператор | выполнит двоичную операцию или, которая вернет 1, если один из двух битов равен 1 [5].

#0 | 1 = 1 
#1 | 0 = 1 
#1 | 1 = 1
#0 | 0 = 0

>>> x = 2 #00000010
>>> y = 5 #00000101
>>> x | y
7 #00000111

Оператор & выполнит бинарную операцию и, которая вернет 1, если оба бита равны 1 [5].

#1 & 1 = 1
#0 & 0 = 0 
#0 & 1 = 0 
#1 & 0 = 0

>>> x = 3 #00000011
>>> y = 6 #00000110
>>> x & y
2 #00000010

Оператор ~ выполнит двоичную операцию «не», которая перевернет все биты в числе.

Когда мы используем оператор ~, 0 имеет инверсию -1, 1 имеет инверсию -2 и так далее.

>>> ~0 #00000000
-1 #-00000001

>>> ~1 #00000001
-2 #-00000010

Оператор ^ выполнит бинарную операцию xor, которая вернет 1, если только один из двух битов равен 1 [5].

#0 ^ 0 = 0
#1 ^ 1 = 0
#0 ^ 1 = 1 
#1 ^ 0 = 1 

>>> x = 4 #00000100
>>> y = 8 #00001000
>>> x ^ y
12 #00001100

Оператор << сдвинет значение операнда влево на указанное количество бит, а оператор >> сдвинет операнд вправо на указанное количество бит [5].

>>> x = 4 #00000100
>>> x << 2
16

>>> y = 9 #00001001
>>> y << 2
2 #00000010

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

Оператор присваивания используется для присвоения значения переменной. Большинство языков программирования, включая Python, используют = в качестве оператора присваивания, но это отличается от математики, которая использует = в качестве уравнения. Это связано с тем, что на стандартной клавиатуре нет альтернативы, такой как клавиша со стрелкой влево ( ← ), а использование = также проще и менее запутанно. Также в компьютерных программах мы будем чаще использовать оператор присваивания, чем проверку на равенство [4].

>>> count = 100
>>> count
100

В приведенном выше примере мы присвоили значение 100 переменной count. Однако мы также можем комбинировать операторы присваивания с арифметическими операторами, это обычно называют составными операторами.

>>> x = 10
>>> x += 5 #same as x = x + 5
>>> x
15

>>> y = 3
>>> y *= x
>>> y
45

Чтобы узнать больше об операции присваивания, вы можете прочитать эту статью.

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

Оператор принадлежности используется для проверки того, представлены ли значение или переменная последовательностями в объекте. В Python есть два оператора принадлежности: in и not in [5].

>>> letters = ['a', 'i', 'u', 'e', 'o']
>>> 'u' in letters
True

>>> 'a' not in letters
False

Оператор in вернет true, если последовательность с указанным значением существует в объекте, а оператор not in вернет true, если последовательность с указанным значением не существует в объекте.

Следует отметить, что здесь мы можем использовать оператор принадлежности только к итерируемому объекту, иначе он вернет ошибку.

>>> num = 45
>>> 5 in num
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: argument of type 'int' is not iterable

Операторы идентификации

Оператор идентификации используется для сравнения двух объектов, здесь сравнивается не значение, а то, являются ли они на самом деле одним и тем же объектом с одним и тем же местом в памяти. В Python есть два оператора идентификации: is и is not [5].

>>> a = [1, 2, 3]
>>> b = [1, 2, 3]
>>> c = a
>>> a is b
False

>>> a is c
True

>>> a is not b
True

Причина, по которой оператор is может возвращать True, заключается в том, что переменные a и c берутся из одного и того же объекта, а оператор is возвращает False, потому что a и b не берутся из одного и того же объекта, даже если они имеют одинаковое значение. Оператор is not возвращает True, если обе переменные не являются одним и тем же объектом.

Заключение

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

Ссылки:

[1] 3. Неофициальное введение в Python — документация Python 3.10.5. (2022). Получено 8 июля 2022 г. с https://docs.python.org/3/tutorial/introduction.html#using-python-as-a-calculator.

[2] Встроенные типы — документация по Python 3.10.5. (2022). Получено 8 июля 2022 г. с https://docs.python.org/3/library/stdtypes.html#comparisons.

[3] Дауни, А.Б. (2015). Думайте о Python: как думать как ученый-компьютерщик. О'Райли Медиа.

[4] Лубанович, Б. (2019). Представляем Python: современные вычисления в простых пакетах. О'Райли Медиа.

[5] Операторы Python. (2022). Получено 8 июля 2022 г. с https://www.w3schools.com/python/python_operators.asp.

Дополнительные материалы на PlainEnglish.io. Подпишитесь на нашу бесплатную еженедельную рассылку новостей. Подпишитесь на нас в Twitter и LinkedIn. Посетите наш Community Discord и присоединитесь к нашему Коллективу талантов.