Python3 Операторы
Что такое оператор?
В этой главе в основном объясняются операторы Python.
Рассмотрим простой пример:
4 + 5 = 9
В примере,4and5называетсяоперанд,+называетсяоператор。
Язык Python поддерживает следующие типы операторов:
- Арифметические операторы
- Операторы сравнения (реляционные)
- Операторы присваивания
- Логические операторы
- Побитовые операторы
- Операторы принадлежности
- Операторы идентичности
- Приоритет операторов
Далее давайте изучим операторы Python один за другим.
Арифметические операторы Python
Далее предполагается, что переменнаяa=10, переменнаяb=21:
| Operator | Описание | Пример |
|---|---|---|
| + | Сложение — складывает два объекта | a + b выводит 31 |
| - | Вычитание — даёт отрицательное число или вычитает одно число из другого | a - b выводит -11 |
| * | Умножение — умножает два числа или возвращает строку, повторённую определённое количество раз | a * b выводит 210 |
| / | Деление — x делится на y | b / a выводит 2.1 |
| % | Деление по модулю — возвращает остаток от деления | b % a выводит 1 |
| ** | Возведение в степень — возвращает x в степени y | a**b — это 10 в 21-й степени |
| // | Целочисленное деление — округляет вниз до ближайшего целого |
>>> 9//2 4 >>> -9//2 -5 |
Следующий пример демонстрирует работу всех арифметических операторов в Python:
Пример (Python 3.0+)
Приведённый выше пример выводит:
1 - c 的值为: 31 2 - c 的值为: 11 3 - c 的值为: 210 4 - c 的值为: 2.1 5 - c 的值为: 1 6 - c 的值为: 8 7 - c 的值为: 2
Операторы сравнения Python
Предполагается, что переменная a равна 10, а переменная b равна 20:
| Operator | Описание | Пример |
|---|---|---|
| == | Равно - Сравнивает, равны ли объекты | (a == b) возвращает False. |
| != | Не равно - Сравнивает, не равны ли два объекта | (a != b) возвращает True. |
| > | Больше — возвращает, больше ли x, чем y | (a > b) возвращает False. |
| < | Меньше - Возвращает, меньше ли x, чем y. Все операторы сравнения возвращают 1 для истины и 0 для лжи. Они соответственно эквивалентны специальным переменным True и False. Обратите внимание на регистр этих имён переменных. | (a < b) возвращает True. |
| >= | Больше или равно — возвращает, больше ли x, чем y, или равно ли ему. | (a >= b) возвращает False. |
| <= | Меньше или равно - Возвращает, является ли x меньшим или равным y. | (a <= b) возвращает True. |
Следующий пример демонстрирует работу всех операторов сравнения в Python:
Пример (Python 3.0+)
Приведённый выше пример выводит:
1 - a 不等于 b 2 - a 不等于 b 3 - a 大于等于 b 4 - a 大于 b 5 - a 小于等于 b 6 - b 大于等于 a
Операторы присваивания Python
Предполагается, что переменная a равна 10, а переменная b равна 20:
| Operator | Описание | Пример |
|---|---|---|
| = | Простой оператор присваивания | c = a + b присваивает результат a + b переменной c |
| += | Оператор присваивания со сложением | c += a эквивалентно c = c + a |
| -= | Оператор присваивания с вычитанием | c -= a эквивалентно c = c - a |
| *= | Оператор присваивания умножения | c *= a эквивалентно c = c * a |
| /= | Оператор присваивания деления | c /= a эквивалентно c = c / a |
| %= | Оператор присваивания по модулю | c %= a эквивалентно c = c % a |
| **= | Оператор присваивания возведения в степень | c **= a эквивалентно c = c ** a |
| //= | Оператор присваивания деления с округлением вниз | c //= a эквивалентно c = c // a |
| := | Моржовый оператор, его основное назначение — выполнять присваивание и одновременно возвращать присвоенное значение внутри выражения.Новый оператор, добавленный в Python 3.8。 | В этом примере выражение присваивания избегает вызова len() дважды: if (n := len(a)) > 10:
print(f"List is too long ({n} elements, expected <= 10)")
|
Следующий пример демонстрирует работу всех операторов присваивания в Python:
Пример (Python 3.0+)
Приведённый выше пример выводит:
1 - c 的值为: 31 2 - c 的值为: 52 3 - c 的值为: 1092 4 - c 的值为: 52.0 5 - c 的值为: 2 6 - c 的值为: 2097152 7 - c 的值为: 99864
В Python 3.8 и более поздних версиях была введена новая синтаксическая возможность под названием «моржовый оператор», которая использует:=символ. Основное назначение этого оператора — выполнять присваивание и одновременно возвращать присвоенное значение внутри выражения.
Использование моржового оператора может упростить код в некоторых случаях, особенно когда нужно использовать результат присваивания внутри выражения. Это полезно для упрощения условий циклов или повторяющихся вычислений в выражениях.
Ниже приведён простой пример, демонстрирующий использование моржового оператора:
Пример
n = 10
if n > 5:
print(n)
# Использование моржового оператора
if (n := 10) > 5:
print(n)
if (n := 10) > 5:: Здесь используется моржовый оператор (:=) синтаксис. Моржовый оператор выполняет операцию присваивания внутри выражения.(n := 10): Присваивает переменнойnзначение 10 и одновременно возвращает результат присваивания.> 5: Проверяет, является ли присвоенноеnзначение большим 5. Если условие истинно, выполнить следующий блок кода.
print(n): Если условие истинно, выведите переменнуюn(т.е. 10).
Преимущества оператора моржа:
- Оператор моржа (
:=) позволяет выполнять присваивание внутри выражения, что может уменьшить дублирование кода и улучшить читаемость и лаконичность кода. - В приведенном выше примере традиционный подход требует отдельной строки для присваивания
n, а затемifинструкцию для проверки условия. С оператором моржа код можетifнапрямую выполнять присваивание и проверку условия внутри инструкции.
Побитовые операторы Python
Побитовые операторы обрабатывают числа как двоичные для вычислений. Правила побитовых операций в Python следующие:
В таблице ниже переменная a равна 60, а b равна 13. Двоичные форматы выглядят следующим образом:
a = 0011 1100 b = 0000 1101 ----------------- a&b = 0000 1100 a|b = 0011 1101 a^b = 0011 0001 ~a = 1100 0011
| Operator | Описание | Пример |
|---|---|---|
| & | Побитовый оператор AND: для двух значений, участвующих в операции, если оба соответствующих бита равны 1, результирующий бит равен 1; в противном случае он равен 0. | (a & b) выводит 12. Двоичное объяснение: 0000 1100 |
| | | Побитовый оператор OR: если хотя бы один из двух соответствующих двоичных битов равен 1, результирующий бит равен 1. | (a | b) выводит 61. Двоичное объяснение: 0011 1101 |
| ^ | Побитовый оператор XOR: когда два соответствующих двоичных бита различаются, результат равен 1. | (a ^ b) выводит 49. Пояснение в двоичном виде: 0011 0001 |
| ~ | Побитовый оператор NOT: инвертирует каждый двоичный бит данных, превращая 1 в 0, а 0 в 1.~xаналогично-x-1 | (~a ) выводит -61. Пояснение в двоичном виде: 1100 0011, в форме дополнения до двух для знакового двоичного числа. |
| << | Оператор сдвига влево: все двоичные биты операнда сдвигаются влево на указанное число позиций. Число справа от «<<» задаёт количество позиций для сдвига. Старшие биты отбрасываются, младшие заполняются 0. | a << 2 выводит 240. Пояснение в двоичном виде: 1111 0000 |
| >> | Оператор сдвига вправо: все двоичные биты операнда слева от «>>» сдвигаются вправо на указанное число позиций. Число справа от «>>» задаёт количество позиций для сдвига. | a >> 2 выводит 15. Пояснение в двоичном виде: 0000 1111 |
Следующие примеры демонстрируют работу всех побитовых операторов Python:
Пример (Python 3.0+)
Вывод приведенного выше примера:
1 - c 的值为: 12 2 - c 的值为: 61 3 - c 的值为: 49 4 - c 的值为: -61 5 - c 的值为: 240 6 - c 的值为: 15
Логические операторы Python
Язык Python поддерживает логические операторы. Далее предполагается, что переменная a равна 10, а b равна 20:
| Operator | Логическое выражение | Описание | Пример |
|---|---|---|---|
| и | x and y | Логическое AND — если x равно False, x and y возвращает значение x; в противном случае возвращает вычисленное значение y. | (a and b) возвращает 20. |
| или | x or y | Логическое OR — если x равно True, он возвращает значение x; в противном случае возвращает вычисленное значение y. | (a or b) возвращает 10. |
| not | not x | Логическое НЕ — Если x имеет значение True, возвращает False. Если x имеет значение False, возвращает True. | not(a and b) возвращает False |
Вывод приведенного выше примера:
Пример (Python 3.0+)
Вывод приведенного выше примера:
1 - 变量 a 和 b 都为 true 2 - 变量 a 和 b 都为 true,或其中一个变量为 true 3 - 变量 a 和 b 有一个不为 true 4 - 变量 a 和 b 都为 true,或其中一个变量为 true 5 - 变量 a 和 b 都为 false,或其中一个变量为 false
Операторы принадлежности Python
Помимо приведённых выше операторов, Python также поддерживает операторы принадлежности. Тестовый экземпляр содержит ряд элементов, включая строки, списки или кортежи.
| Operator | Описание | Пример |
|---|---|---|
| in | Возвращает True, если значение найдено в указанной последовательности; иначе возвращает False. | x in y sequence: Возвращает True, если x находится в последовательности y. |
| not in | Возвращает True, если значение не найдено в указанной последовательности; иначе возвращает False. | x not in y sequence: Возвращает True, если x не находится в последовательности y. |
Следующие примеры демонстрируют работу всех операторов принадлежности Python:
Пример (Python 3.0+)
Вывод приведенного выше примера:
1 - 变量 a 不在给定的列表中 list 中 2 - 变量 b 不在给定的列表中 list 中 3 - 变量 a 在给定的列表中 list 中
Операторы идентичности Python
Операторы идентичности используются для сравнения местоположений в памяти двух объектов.
| Operator | Описание | Пример |
|---|---|---|
| является | is используется для определения, ссылаются ли два идентификатора на один и тот же объект | x is y, аналогичноid(x) == id(y), если они ссылаются на один и тот же объект, возвращает True; иначе возвращает False. |
| не | is not используется для определения, ссылаются ли два идентификатора на разные объекты | x is not y, аналогичноid(x) != id(y). Если они не ссылаются на один и тот же объект, возвращает True; иначе возвращает False. |
Примечание: id()Функция используется для получения адреса памяти объекта.
Следующие примеры демонстрируют работу всех операторов идентичности Python:
Пример (Python 3.0+)
Вывод приведенного выше примера:
1 - a 和 b 有相同的标识 2 - a 和 b 有相同的标识 3 - a 和 b 没有相同的标识 4 - a 和 b 没有相同的标识
Разница между is и ==:
is используется, чтобы определить, ссылаются ли две переменные на один и тот же объект; == используется, чтобы определить, равны ли значения переменных, на которые они ссылаются.
>>>a = [1, 2, 3] >>> b = a >>> b is a True >>> b == a True >>> b = a[:] >>> b is a False >>> b == a True
Приоритет операторов Python
В следующей таблице перечислены все операторы от высшего к низшему приоритету. Операторы в одной и той же ячейке имеют одинаковый приоритет. Операторы обозначают бинарные операции, если не указано иное. Операторы в одной и той же ячейке группируются слева направо (кроме возведения в степень, которое группируется справа налево):
Operator |
Описание |
|---|---|
|
Выражения в скобках |
|
Подписка, срезы, вызов, обращение к атрибуту |
await x |
выражение await |
|
Возведение в степень (степень) |
|
Унарный плюс, унарный минус, побитовое НЕ |
|
Умножение, матричное умножение, деление, целочисленное деление, остаток |
|
Сложение и вычитание |
|
Сдвиги |
|
Побитовое И |
|
Побитовое XOR |
|
Побитовое ИЛИ |
|
Сравнения, включая проверки принадлежности и проверки идентичности |
|
Логическое НЕ |
|
Логическое И |
|
Логическое ИЛИ |
|
Условное выражение |
|
лямбда-выражение |
|
Выражение присваивания |
Следующие примеры демонстрируют работу всех операторов Python с учётом приоритета:
Пример (Python 3.0+)
Вывод приведенного выше примера:
(a + b) * c / d 运算结果为: 90.0 ((a + b) * c) / d 运算结果为: 90.0 (a + b) * (c / d) 运算结果为: 90.0 a + (b * c) / d 运算结果为: 50.0
and имеет более высокий приоритет:
Пример
В приведенном выше примере сначала вычисляетсяy and zи возвращает False, затемx or Falseвозвращает True, и результат вывода:
情况1:默认优先级(先算and) yes 情况2:强制改变优先级(先算or) no
Другие расширенияПримечание:Python3 больше не поддерживает<>оператор, вы можете использовать!=вместо него, если вам действительно нужно использовать этот оператор сравнения, вы можете использовать следующий метод:
>>> from __future__ import barry_as_FLUFL >>> 1 <> 2 True