Python Операторы


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

В этой главе в основном объясняются операторы Python. Давайте рассмотрим простой пример 4 +5 = 9 В примере,4и5называютсяоперандами, а,+называется оператором.

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

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


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

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

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

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

Примеры (Python 2.0+)

#!/usr/bin/python # -*- coding: UTF-8 -*- 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
5 - c 的值为: 1
6 - c 的值为: 8
7 - c 的值为: 2

Примечание:В Python 2.x при делении целого числа на целое может получиться только целое число. Если вам нужна дробная часть, измените одно из чисел на число с плавающей точкой.

>>> 1/2
0
>>> 1.0/2
0.5
>>> 1/float(2)
0.5

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

Предполагается, что переменная a равна 10, а переменная b равна 20:

OperatorОписаниеПример
==Равно — сравнивает, равны ли объекты(a == b) возвращает False.
!=Не равно — сравнивает, не равны ли два объекта(a != b) возвращает True.
<>Не равно — сравнивает, не равны ли два объекта.Устарело в Python 3.(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 2.0+)

#!/usr/bin/python # -*- coding: UTF-8 -*- 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" if a > b : print "5 - a больше b" else: print "5 - a меньше или равно b" # Измените значения переменных a и b a = 5 b = 20 if a <= b : print "6 - a меньше или равно b" else: print "6 - a больше b" if b >= a : print "7 - b больше или равно a" else: print "7 - b меньше a"

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

1 - a 不等于 b
2 - a 不等于 b
3 - a 不等于 b
4 - a 大于等于 b
5 - a 大于 b
6 - a 小于等于 b
7 - 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:

Примеры (Python 2.0+)

#!/usr/bin/python # -*- coding: UTF-8 -*- 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
5 - c 的值为: 2
6 - c 的值为: 2097152
7 - c 的值为: 99864

Побитовые операторы 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: инвертирует каждый бит в двоичном представлении, меняя 0 на 1, а 1 на 0.~xАналогично-x-1(~a ) выводит -61, двоичное пояснение: 1100 0011 (представлено в дополнительном коде), в дополнительном коде знакового двоичного числа.
<<Оператор левого сдвига: все двоичные биты операнда сдвигаются влево на число битов, определяемое<<Число справа задаёт количество позиций для сдвига. Старшие биты отбрасываются, а младшие заполняются 0.a << 2 выводит 240, пояснение в двоичном виде: 1111 0000
>>Оператор правого сдвига: сдвигает все двоичные биты операнда слева от >> вправо на указанное число разрядов,>>Число справа задаёт количество позиций для сдвига.a >> 2 выводит 15, пояснение в двоичном виде: 0000 1111

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

Примеры (Python 2.0+)

#!/usr/bin/python # -*- coding: UTF-8 -*- 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 возвращает False, иначе возвращает вычисленное значение y.(a and b) возвращает 20.
илиx or yЛогический оператор "or" — если x не равно нулю, он возвращает вычисленное значение x, иначе возвращает вычисленное значение y.(a or b) возвращает 10.
notnot xЛогический оператор "not" — если x равно True, возвращает False. Если x равно False, возвращает True.not(a and b) возвращает False

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

Примеры (Python 2.0+)

#!/usr/bin/python # -*- coding: UTF-8 -*- a = 10 b = 20 if a and b : print "1 — переменные a и b обе равны True" else: print "1 — одна из переменных a и b не равна True" if a or b : print "2 — переменные a и b обе равны True, или одна из переменных равна True" else: print "2 — переменные a и b обе не равны True" # изменить значение переменной a a = 0 if a and b : print "3 - переменные a и b обе равны True" else: print "3 - одна из переменных a и b не равна True" if a or b : print "4 - переменные a и b обе равны True, или одна из переменных равна True" else: print "4 - переменные a и b обе не равны True" if not( a and b ): print "5 - переменные a и b обе равны False, или одна из переменных равна False" else: print "5 - переменные a и b обе равны True"

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

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

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

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

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(a) != id(b). Если они не ссылаются на один и тот же объект, результат возвращает True; иначе возвращает False.

Примечание: id()Функция используется для получения адреса памяти объекта.

В следующем примере демонстрируются операции всех операторов идентичности в Python:

Примеры (Python 2.0+)

#!/usr/bin/python # -*- coding: UTF-8 -*- a = 20 b = 20 if ( a is b ): print "1 - a и b имеют одинаковую идентичность" else: print "1 - a и b не имеют одинаковой идентичности" if ( a is not 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Описание
** Возведение в степень (наивысший приоритет)
~ + - Побитовая инверсия, унарный плюс и минус (имена методов для последних двух — +@ и -@)
* / % // Умножение, деление, остаток от деления и целочисленное деление
+ - Сложение и вычитание
>> << Операторы сдвига вправо, сдвига влево
& Побитовое 'AND'
^ | Побитовые операторы
<= < > >= Операторы сравнения
<> == != Операторы равенства
= %= /= //= -= += *= **= Операторы присваивания
is is not Операторы идентичности
in not in Операторы принадлежности
not and or Логические операторы

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

Примеры (Python 2.0+)

#!/usr/bin/python # -*- coding: UTF-8 -*- 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
((a + b) * c) / d 运算结果为: 90
(a + b) * (c / d) 运算结果为: 90
a + (b * c) / d 运算结果为: 50
Другие расширения