Python3 Операторы


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

В этой главе в основном объясняются операторы Python.

Рассмотрим простой пример:

4 + 5 = 9

В примере,4and5называетсяоперанд,+называетсяоператор。

Язык Python поддерживает следующие типы операторов:

Далее давайте изучим операторы Python один за другим.


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

Далее предполагается, что переменнаяa=10, переменнаяb=21:

OperatorОписаниеПример
+Сложение — складывает два объектаa + b выводит 31
-Вычитание — даёт отрицательное число или вычитает одно число из другогоa - b выводит -11
*Умножение — умножает два числа или возвращает строку, повторённую определённое количество разa * b выводит 210
/Деление — x делится на yb / a выводит 2.1
%Деление по модулю — возвращает остаток от деленияb % a выводит 1
**Возведение в степень — возвращает x в степени ya**b — это 10 в 21-й степени
//Целочисленное деление — округляет вниз до ближайшего целого
>>> 9//2
4
>>> -9//2
-5

Следующий пример демонстрирует работу всех арифметических операторов в Python:

Пример (Python 3.0+)

#!/usr/bin/python3 a = 21 b = 10 c = 0 c = a + b print ("1 - значение c равно:", c) c = a - b print ("2 - значение c равно:", c) c = a * b print ("3 - значение c равно:", c) c = a / b print ("4 - значение c равно:", c) c = a % b print ("5 - значение c равно:", c) # Измените переменные a, b, c a = 2 b = 3 c = a**b print ("6 - значение c равно:", c) a = 10 b = 5 c = a//b print ("7 - значение c равно:", c)

Приведённый выше пример выводит:

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+)

#!/usr/bin/python3 a = 21 b = 10 c = 0 if ( a == b ): print ("1 - a равно b") else: print ("1 - a не равно b") if ( a != b ): print ("2 - a не равно b") else: print ("2 - a равно b") if ( a < b ): print ("3 - a меньше b") else: print ("3 - a больше или равно b") if ( a > b ): print ("4 - a больше b") else: print ("4 - a меньше или равно b") # Измените значения переменных a и b a = 5 b = 20 if ( a <= b ): print ("5 - a меньше или равно b") else: print ("5 - a больше b") if ( b >= a ): print ("6 - b больше или равно a") else: print ("6 - b меньше a")

Приведённый выше пример выводит:

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+)

#!/usr/bin/python3 a = 21 b = 10 c = 0 c = a + b print ("1 - значение c равно:", c) c += a print ("2 - значение c равно:", c) c *= a print ("3 - значение c равно:", c) c /= a print ("4 - значение c равно:", c) c = 2 c %= a print ("5 - значение c равно:", c) c **= a print ("6 - значение c равно:", c) c //= a print ("7 - значение c равно:", c)

Приведённый выше пример выводит:

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+)

#!/usr/bin/python3 a = 60 # 60 = 0011 1100 b = 13 # 13 = 0000 1101 c = 0 c = a & b # 12 = 0000 1100 print ("1 - Значение c равно:", c) c = a | b # 61 = 0011 1101 print ("2 - Значение c равно:", c) c = a ^ b # 49 = 0011 0001 print ("3 - Значение c равно:", c) c = ~a # -61 = 1100 0011 print ("4 - Значение c равно:", c) c = a << 2 # 240 = 1111 0000 print ("5 - Значение c:", c) c = a >> 2 # 15 = 0000 1111 print ("6 - Значение c равно:", c)

Вывод приведенного выше примера:

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.
notnot xЛогическое НЕ — Если x имеет значение True, возвращает False. Если x имеет значение False, возвращает True.not(a and b) возвращает False

Вывод приведенного выше примера:

Пример (Python 3.0+)

#!/usr/bin/python3 a = 10 b = 20 if ( a and b ): print ("1 — переменные a и b обе истинны") else: print ("1 — одна из переменных a и b не истинна") if ( a or b ): print ("2 — переменные a и b обе истинны, или одна из переменных истинна") else: print ("2 — переменные a и b обе не истинны") # Измените значение переменной a a = 0 if ( a and b ): print ("3 — переменные a и b обе истинны") else: print ("3 — одна из переменных a и b не истинна") if ( a or b ): print ("4 — переменные a и b обе истинны, или одна из переменных истинна") else: print ("4 — переменные a и b обе не истинны") if not( a and b ): print ("5 — переменные a и b обе ложны, или одна из переменных ложна") else: print ("5 — переменные a и b обе истинны")

Вывод приведенного выше примера:

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+)

#!/usr/bin/python3 a = 10 b = 20 list = [1, 2, 3, 4, 5 ] if ( a in list ): print ("1 - Переменная a находится в заданном списке list") else: print ("1 - Переменная a не находится в заданном списке list") if ( b not in list ): print ("2 - Переменная b не находится в заданном списке list") else: print ("2 - Переменная b находится в заданном списке list") # Измените значение переменной a a = 2 if ( a in list ): print ("3 - Переменная a находится в заданном списке list") else: print ("3 - Переменная a не входит в заданный список list")

Вывод приведенного выше примера:

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+)

#!/usr/bin/python3 a = 20 b = 20 if ( a is b ): print ("1 - a и b имеют одинаковую идентичность") else: print ("1 - a и b не имеют одинаковой идентичности") if ( id(a) == id(b) ): print ("2 - a и b имеют одинаковую идентичность") else: print ("2 - a и b не имеют одинаковой идентичности") # Изменить значение переменной b b = 30 if ( a is b ): print ("3 - a и b имеют одинаковую идентичность") else: print ("3 - a и b не имеют одинаковой идентичности") if ( a is not b ): print ("4 - a и b не имеют одинаковой идентичности") else: print ("4 - a и b имеют одинаковую идентичность")

Вывод приведенного выше примера:

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

Описание

(expressions...),

[expressions...], {key: value...}, {expressions...}

Выражения в скобках

x[index], x[index:index], x(arguments...), x.attribute

Подписка, срезы, вызов, обращение к атрибуту

await x

выражение await

**

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

+x, -x, ~x

Унарный плюс, унарный минус, побитовое НЕ

*, @, /, //, %

Умножение, матричное умножение, деление, целочисленное деление, остаток

+, -

Сложение и вычитание

<<, >>

Сдвиги

&

Побитовое И

^

Побитовое XOR

|

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

in,not in, is,is not, <, <=, >, >=, !=, ==

Сравнения, включая проверки принадлежности и проверки идентичности

not x

Логическое НЕ

and

Логическое И

or

Логическое ИЛИ

if -- else

Условное выражение

lambda

лямбда-выражение

:=

Выражение присваивания

Следующие примеры демонстрируют работу всех операторов Python с учётом приоритета:

Пример (Python 3.0+)

#!/usr/bin/python3 a = 20 b = 10 c = 15 d = 5 e = 0 e = (a + b) * c / d #( 30 * 15 ) / 5 print ("The result of (a + b) * c / d is:", e) e = ((a + b) * c) / d # (30 * 15 ) / 5 print ("The result of ((a + b) * c) / d is:", e) e = (a + b) * (c / d) # (30) * (15/5) print ("The result of (a + b) * (c / d) is:", e) e = a + (b * c) / d # 20 + (150/5) print ("Результат a + (b * c) / d равен:", e)

Вывод приведенного выше примера:

(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 имеет более высокий приоритет:

Пример

x = True y = False z = False print("Случай 1: приоритет по умолчанию (сначала вычисляется and)") if x or y and z: # Эквивалентно x or (y and z) print("yes") # Будет выведено else: print("no") print("\nСлучай 2: Принудительное изменение приоритета (сначала вычисляется or)") if (x or y) and z: # Вручную добавьте скобки, чтобы изменить порядок print("yes") # Не будет выведено else: print("no") # Будет выведено

В приведенном выше примере сначала вычисляетсяy and zи возвращает False, затемx or Falseвозвращает True, и результат вывода:

情况1:默认优先级(先算and)
yes

情况2:强制改变优先级(先算or)
no

Примечание:Python3 больше не поддерживает<>оператор, вы можете использовать!=вместо него, если вам действительно нужно использовать этот оператор сравнения, вы можете использовать следующий метод:

>>> from __future__ import barry_as_FLUFL
>>> 1 <> 2
True
Другие расширения