Определение арифметических, реляционных, побитовых, логических операций, операций присваивания, принадлежности и идентификации.
Есть несколько концепций, которые всегда существуют в любом языке программирования, одна из концепций, содержащихся в языке программирования 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 и присоединитесь к нашему Коллективу талантов.