Python с нуля – часть 3: базовые операторы

PythonЧто такое “оператор”?

Простой ответ может быть дан с помощью выражения “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