Операторы и выражения в Python
Большинство строк программного кода представляют собой выражения. Например: 1 + 2
— это выражение. Выражение состоит из 2 частей:
- Оператор (+) — функционал, представленный в виде символов (например + ==) или зарезервированных слов (например and not).
- Операнды (1 и 2) — это данные, над которыми производится действия.
После того как Python-интерпретатор вычислит выражение, мы можем, как в примере выше, присвоить результат переменной sum
. Или, например, сразу вывести результат на экран:
>>> print(1 + 2)
3
Операторы сравнения
Рассмотрим простой пример — 1 + 2 == 3
.
Для проверки истинности данного условия, используется логический тип. Когда мы выполним данное выражение, в результате нам вернется True
(истина) или False
(ложь).
>>> 1 + 2 == 3
True
В данном примере мы используем один из операторов сравнения — "==" (равно). Всего в Python таких операторов 6:
==
— равно;!=
— не равно;>
— больше;<
— меньше;>=
— больше или равно;<=
— меньше или равно.
>>> 1 == 2
False
>>> 1 != 2
True
>>> 1 > 2
False
>>> 1 < 2
True
>>> 1 >= 2
False
>>> 1 <= 2
True
Логические операторы
Правила выполнения логических операций соответствуют таблицам истинности. В Python 3 логических оператора:
or
— логическое "ИЛИ";and
— логическое "И";not
— логическое отрицание.
>>> (1 + 1 == 2) or (2 * 2 == 5)
True
>>> (1 + 1 == 2) and (2 * 2 == 5)
False
>>> (1 + 1 == 2) and not (2 * 2 == 5)
True
Арифметические операторы
Арифметические операторы в Python производят арифметические операции над числами (сложение, вычитание, деление и т.д.);
+
— сложение;-
— вычитание;*
— умножение;/
— деление;//
— целочисленное деление (возвращает только целую часть от деления, значение после запятой отбрасывается);%
— деление по модулю (возвращает остаток от деления);**
— возведение в степень.
>>> 1 + 2
3
>>> 1 - 2
-1
>>> 1 * 2
2
>>> 1 / 2
0.5
>>> 10 // 3
3
>>> 10 % 3
1
>>> 3 ** 2
9
Операторы присваивания
Операторы присваивания в Python работаю вполне очевидно — значение находящееся справа присваивается переменной, находящейся слева. Существует несколько разновидностей операторов присваивания:
=
— значение правого операнда присвоится левому операнду;+=
— сумма левого и правого операнда присвоится левому операнду;-=
— разность левого и правого операнда присвоится левому операнду;*=
— произведение левого и правого операнда присвоится левому операнду;/=
— разделит левый операнд на правый и результат присвоится левому операнду;//=
— результат целочисленного деления левого операнда на правый операнд присвоится левому операнду;%=
— разделит левый операнд на правый по модулю и результат присвоится левому операнду;**=
— возведет левый операнд в степень правого и результат присвоится левому операнду.
>>> a = 10
>>> print(a)
10
>>> a = 10
>>> a += 1 # аналогично a = a + 1
>>> print(a)
11
>>> a = 10
>>> a -= 2 # аналогично a = a - 2
>>> print(a)
8
>>> a = 10
>>> a *= 2 # аналогично a = a * 2
>>> print(a)
20
>>> a = 10
>>> a /= 2 # аналогично a = a / 2
>>> print(a)
5.0
>>> a = 10
>>> a //= 3 # аналогично a = a // 2
>>> print(a)
3
>>> a = 10
>>> a %= 3 # аналогично a = a % 2
>>> print(a)
1
>>> a = 10
>>> a **= 2 # аналогично a = a ** 2
>>> print(a)
100
Python поддерживает не только обычное присваивание правого операнда левому, но и множественное присваивание.
>>> a, b, c = 1, "python", [1,2,3]
>>> print(a, b, c)
1 python [1, 2, 3]
С помощью такого присваивания можно поменять значения переменных между собой:
>>> a = 1
>>> b = 2
>>> a, b = b, a
>>> print(a, b)
2 1
Также с помощью множественного присваивания можно "распаковывать" строки (str), списки (list), кортежи (tuple) и словари (dict).
Распаковка особенно удобна, когда функция возвращает несколько значений в виде кортежа (tuple):
>>> def test_page():
return 404, "Not found"
>>> code, message = test_page()
>>> print(code, message)
404 Not found
Главное условие распаковки – количество элементов должно совпадать
Если необходимо распаковать лишь несколько элементов, воспользуйтесь переменной со знаком "*":
>>> text = "deactivate"
>>> first, second, *other_letters = text
>>> print(first, second, other_letters)
d e ['a', 'c', 't', 'i', 'v', 'a', 't', 'e']
Побитовые операторы
Данные операторы предназначены для работы с данными в битовом (двоичном) формате. Про битовые операции смотрите статью на википедии.
~
— побитовое отрицание (для него требуется только один операнд);&
— побитовое "И";|
— побитовое "ИЛИ";^
— исключающее "ИЛИ";<<
— побитовый сдвиг влево;>>
— побитовый сдвиг вправо.
>>> a = 11
>>> b = 34
>>> a & b
2
>>> a | b
43
>>> (a ^ b)
41
>>> ~a
-12
>>> a << 1
22
>>> a >> 2
5
Операторы членства
В Python существует всего 2 оператора принадлежности — in
и not in
и предназначены они для проверки наличия элемента в строке (str), списке (list), словаре (dict) или кортеже (tuple).
in
— возвращает True если элемент присутствует в последовательности;not in
— возвращает True если элемент отсутствует в последовательности.
>>> "host" in "host=local"
True
>>> 2 in [1,2,4,5]
True
>>> "one" in {"one": 1, "two": 1} # в словаре проверка по ключам
True
>>> True in ("string", 2, True)
True
>>> "str" not in ("string", 2, True)
True
Операторы тождественности
Данные операторы сравнивают размещение двух объектов в памяти.
is
— возвращает True если оба операнда указывают на один и тот же объект;is not
— возвращает True если оба операнда указывают на разные объекты.
>>> x = 5
>>> type(x) is int
True
>>> x = 5.1
>>> type(x) is int
False
>>> x = [1, 2, 3] # id(x) = 64620552
>>> y = [1, 2, 3] # id(y) = 60529960
>>> x is y
False
Приоритет операторов
Таблица приоритетов операторов в Python показана ниже.
Элементы отсортированы по убыванию, с высокого приоритета к более низкому. В комбинациях с несколькими операторами, оператор с большим приоритетом выполняется первым.
Например, в выражении 1 + 2 ** 2 * 10
сначала выполнится возведение в степень, далее умножение, потом сложение. Итого результат: 41
.
Извините, но я всё равно не могу сделать одно задание по Python! Помогите чем-нибудь.
Напишите нам на почту: info@pythonchik.ru