Содержание
Что такое “оператор”?
Простой ответ может быть дан с помощью выражения “4 + 5 равно 9“. Тут 4 и 5 – это операнды (operands), а символ плюс (“+“) называется оператором (operator). В языке Python поддерживает такие типы операторов:
- арифметические операторы (arithmetic operators);
- операторы сравнения (comparison или relational operators);
- операторы присваивания (assignment operators);
- логические операторы (logical operators);
- битовые операторы (bitwise operators);
- операторы принадлежности (membership operators);
- операторы тождественности (identity operators).
Далее мы рассмотрим все эти операторы по очереди.
Арифметические операторы в Python
Предположим, переменная a = 10
, а переменная b = 20
.
Оператор | Описание | Пример |
---|---|---|
+ | добавление (addition) – добавляет значения каждого оператора; | a + b даст 30 |
– | вычитание (subtraction) – вычитает правый операнд из левого; | a – b даст -10 |
* | умножение (multiplication) – умножает значения с обоих сторон оператора; | a * b даст 200 |
/ | деление (division) – делит левый операнд на правый; | b / a даст 2 |
% | модуль (modulus) – делит левый операнд на правый и возвращает остаток; | b % a даст 0 |
** | возведение в степень (exponent, экспонента); | a**b даст 10 в степени 20 |
// | деление с остатком – (floor division) – деление операндов, где результат является частным числов, в котором цасти после точки удаляются; | 9//2 равно 4 а 9.0//2.0 будет равно 4.0 |
Примеры:
>>> a = 21 >>> b = 10 >>> c = 0 >>> c = a + b # оператор сложения; >>> print (c) 31 >>> c = a - b # оператор вычитания; >>> print (c) 11 >>> c = a * b # оператор умножения; >>> print (c) 210 >>> c = a / b # оператор деления; >>> print (c) 2 >>> c = a % b # оператор получение модуля; >>> print (c) 1 >>> a = 2 >>> b = 3 >>> c = a**b # оператор возведения в степень; >>> print (c) 8 >>> a = 10 >>> b = 5 >>> c = a//b # оператор деления с остатком; >>> print (c) 2
Операторы сравнения в Python
Предположим, переменная a = 10
, а переменная b = 20
.
Оператор | описание | Пример |
---|---|---|
== | проверяет одинаково ли значение операндов, если одинаковы – то условие является истинной (true); | (a == b) false |
!= | проверяет одинаково ли значение операндов, если НЕ одинаковы – то условие является истинной (true); | (a != b) true |
<> | проверяет одинаково ли значение операндов, если НЕ одинаковы – то условие является истинной (true); | (a <> b) true (этогт оператор аналогичен !=) |
> | проверяет значение левого оператора, если он больше, чем правый – то условие является истинной; | (a > b) false |
< | проверяет значение левого оператора, если он меньше, чем правый – то условие является истинной; | (a < b) true. |
>= | проверяет значение левого оператора, если он больше или равен правому – то условие является истинной; | (a >= b) false |
<= | проверяет значение левого оператора, если он меньше или равен правому – то условие является истинной; | (a <= b) true. |
Примеры:
>>> a = 21 >>> b = 10 >>> c = 0 >>> a == b False >>> a != b True >>> a <> b True >>> a < b False >>> a > b True >>> a = 5 >>> b = 20 >>> a <= b True >>> b >= a True
Операторы присваивания в Python
Предположим, переменная a = 10
, а переменная b = 20
.
Оператор | Описание | Пример |
---|---|---|
= | простой оператор присваивания, присваивает значение с правой стороны операнду с левой стороны; | 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 **= а аналогичен = c ** a |
//= | оператор присваивания “деление с остатком И”, выполняет деление с остатком и присваивает результат левому операнду; | c //= a аналогичен с = c // a |
Битовые операторы в 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 | Description | Example |
---|---|---|
& | Binary AND Operator copies a bit to the result if it exists in both operands. | (a & b) will give 12 which is 0000 1100 |
| | Binary OR Operator copies a bit if it exists in eather operand. | (a | b) will give 61 which is 0011 1101 |
^ | Binary XOR Operator copies the bit if it is set in one operand but not both. | (a ^ b) will give 49 which is 0011 0001 |
~ | Binary Ones Complement Operator is unary and has the efect of ‘flipping’ bits. | (~a ) will give -61 which is 1100 0011 in 2’s complement form due to a signed binary number. |
<< | Binary Left Shift Operator. The left operands value is moved left by the number of bits specified by the right operand. | a << 2 will give 240 which is 1111 0000 |
>> | Binary Right Shift Operator. The left operands value is moved right by the number of bits specified by the right operand. | a >> 2 will give 15 which is 0000 1111 |
Логические операторы в Python
В языке Python поддерживаются следующие логические операторы – and (и), or (или), not (не). Предположим, переменная a = 10
, а переменная b = 20
, тогда:
Operator | Description | Example |
---|---|---|
and | называется логическим оператором AND (И). Если оба операнда = true выражение будет так же true; | (a and b) is true. |
or | называется логическим оператором OR (ИЛИ). Если хотя бы один из двух операторов не пустой (не равен 0) – выражение истинно; | (a or b) is true. |
not | называется логическим оператором NOT (НЕ). Используется для обратного изменения логического результата выражения. Если выражение истинно – с помощью этого оператора оно станет ложным (false). | not(a and b) is false. |
Примеры
>>> a = 10 >>> b = 20 >>> c = 0 >>> if ( a and b ): ... print "Line 1 - a and b are true" ... Line 1 - a and b are true >>> if ( a or b ): ... print "Line 2 - Either a is true or b is true or both are true" ... Line 2 - Either a is true or b is true or both are true >>> if ( a and b ): ... print "Line 3 - a and b are true" ... else: ... print "Line 3 - Either a is not true or b is not true" ... Line 3 - Either a is not true or b is not true >>> if ( a or b ): ... print "Line 4 - Either a is true or b is true or both are true" ... Line 4 - Either a is true or b is true or both are true >>> if not( a and b ): ... print "Line 5 - Either a is not true or b is not true" ... else: ... print "Line 5 - a and b are true" ... Line 5 - Either a is not true or b is not true
Операторы принадлежности в Python
В дополнение к операторам, которые мы обсудили ранее, в Python так же имеются операторы членства (или принадлежности) в последовательностях, таких как строки, списки или кортежи.
Таких операторов всего два:
Operator | Description | Example |
---|---|---|
in | Считается истиной (true), если находит переменную в заданной последовательности, и ложью (false) в противном случае; | x in y, here in results in a 1 if x is a member of sequence y. |
not in | Считается истиной (true), если не находит переменную в заданной последовательности, и ложью (false) в противном случае. | x not in y, here not in results in a 1 if x is not a member of sequence y. |
Примеры
>>> a = 10 >>> b = 20 >>> list = [1, 2, 3, 4, 5 ]; >>> if ( a in list ): ... print "Line 1 - a is available in the given list" ... >>> a = 10 >>> b = 20 >>> list = [1, 2, 3, 4, 5 ]; >>> if ( a in list ): ... print "Line 1 - a is available in the given list" ... else: ... print "Line 1 - a is not available in the given list" ... Line 1 - a is not available in the given list >>> if ( b not in list ): ... print "Line 2 - b is not available in the given list" ... else: ... print "Line 2 - b is available in the given list" ... Line 2 - b is not available in the given list >>> a = 2 >>> if ( a in list ): ... print "Line 3 - a is available in the given list" ... else: ... print "Line 3 - a is not available in the given list" ... Line 3 - a is available in the given list
Операторы тождественности в Python
Операторы тождественности, или идентичности сравнивают расположение двух объектов в памяти. Таких операторов два:
Operator | Description | Example |
---|---|---|
is | Считается истиной (true), если переменные по обе стороны от оператора указывают на один объект, и ложью (false) в противном случае; | x is y, here is results in 1 if id(x) equals id(y). |
is not | Считается ложью (false), если переменные по обе стороны от оператора указывают на один объект, и истиной (true) в противном случае/ | x is not y, here is not results in 1 if id(x) is not equal to id(y). |
Примеры
>>> a = 20 >>> b = 20 >>> >>> if ( a is b ): ... print "Line 1 - a and b have same identity" ... else: ... print "Line 1 - a and b do not have same identity" ... Line 1 - a and b have same identity >>> if ( id(a) == id(b) ): ... print "Line 2 - a and b have same identity" ... else: ... print "Line 2 - a and b do not have same identity" ... Line 2 - a and b have same identity >>> b = 30 >>> if ( a is b ): ... print "Line 3 - a and b have same identity" ... else: ... print "Line 3 - a and b do not have same identity" ... Line 3 - a and b do not have same identity >>> if ( a is not b ): ... print "Line 4 - a and b do not have same identity" ... else: ... print "Line 4 - a and b have same identity" ... Line 4 - a and b do not have same identity
Приоритеты операторов в Python
В следующей таблице приведены все операторы, отсортированные по их приоритету от наибольшего – к меньшему:
Operator | Description |
---|---|
** | Exponentiation (raise to the power) |
~ + – | Complement, unary plus and minus (method names for the last two are +@ and -@) |
* / % // | Multiply, divide, modulo and floor division |
+ – | Addition and subtraction |
>> << | Right and left bitwise shift |
& | Bitwise ‘AND’ |
^ | | Bitwise exclusive `OR’ and regular `OR’ |
<= < > >= | Comparison operators |
<> == != | Equality operators |
= %= /= //= -= += *= **= | Assignment operators |
is is not | Identity operators |
in not in | Membership operators |
not or and | Logical operators |
Прмиеры
>>> a = 20 >>> b = 10 >>> c = 15 >>> d = 5 >>> e = 0 >>> >>> e = (a + b) * c / d #( 30 * 15 ) / 5 >>> print "Value of (a + b) * c / d is ", e Value of (a + b) * c / d is 90 >>> >>> e = ((a + b) * c) / d # (30 * 15 ) / 5 >>> print "Value of ((a + b) * c) / d is ", e Value of ((a + b) * c) / d is 90 >>> >>> e = (a + b) * (c / d); # (30) * (15/5) >>> print "Value of (a + b) * (c / d) is ", e Value of (a + b) * (c / d) is 90 >>> >>> e = a + (b * c) / d; # 20 + (150/5) >>> print "Value of a + (b * c) / d is ", e Value of a + (b * c) / d is 50