Оператори і вирази в Python

Вступне слово

Більшість інструкцій (логічні рядки) у твоїй програмі будуть містити вирази. Простим прикладом виразу є вираз 2 + 3. Вираз можна розділити на оператори(дії) і операнди(сталі чи змінні, над якими виконуються дії).

Оператори функціонально призначені робити щось(виконувати дії над чимось) та  представлені символами такими як + або спеціальними ключовими словами. Операторам потрібні якісь дані для того, щоб мати можливість над чимось працювати. Такі дані називаються операндами. У цьому випадку числа 2 і 3 є операндами.

Оператори

Ми зараз швидко оглянемо тему операторів і їх використання.

Зауваж, що ти можеш вичислити вираз з цього прикладу використовуючи інтерпретатор в інтерактивному режимі. Наприклад, для обчислення виразу 2+3 запусти інтерпретатор і напиши:

 

Оператор Назва Пояснення Приклади
+ Плюс Додає два об’єкта. А також конкатенація для типу даних string 3+5 дає 8. 'a'+'b' дає 'ab'
- Мінус Або дає число зі знаком - або віднімає одне число від іншого -5.2 дає негативне число. 50-24 дає 26
* Множення Це або операція множення або операція "розмноження" для рядкового типу.Поверне рядок повторений задану к-ть разів 2*3 дорівнює 6. 'la'*3 дає 'lalala'
** Піднесення до степені Повертає x в степені y 3 ** 4 дає 81 (іншими словами 3 *3 * 3 * 3)
/ Ділення Розділити x на y 4/3 дає 1.3333333333333333
// Цілочислове ділення Повертає цілочисельну частку від ділення 4//3 дає 1
% Ділення по модулю Повертає залишок від ділення 8 % 3 дасть 2. -25.5 % 2.25 дасть 1.5.
<< Зсув вліво Зсуває біти числа вліво на задану к-ть позицій. Будь-яке число в оперативній пам’яті ПК представлено у вигляді бітів — або двійкових чисел, тобто 0 і 1 2 << 2 дасть 8. В двійковому вигляді 2 представляє собою 10. Зсув вліво на 2 біта дає 1000, що в десятковій системі числення означає 8.
>> Зсув вправо Зсуває біти числа вправо на задане число позицій 11 >>1 дасть 5. В двійковій системі числення 11 представляє собою 1011, що будучи зміщеним на 1 біт вправо, дає 101, а це, в свою чергу, не що інше як десяткове 5
& Побітне І Побітна операція І над числами 5 & 3 дає 1
| Побітне АБО Побітна операція АБО над числами 5 | 3 дає 7
^ Побітне ВИКЛЮЧНО АБО Побітна операція ВИКЛЮЧНО АБО над числами 5 ^ 3 дає 6
~ Побітне НЕ Побітне НЕ x це ~(x+1) ~5 дає -6
< Менше ніж Визначає чи вірно те, що x менше за y. Всі операції порівняння повертають True або False. Зауваж на заглавні букви в цих словах 5 < 3 дає False 3 < 5 дає True. Можна складати довільні ланцюжки: 3 < 5 < 7 дає True
> Більше ніж Визначає чи вірно те, що x більше за y 5 > 3 поверне True. Якщо обидва операнди числа, перед порівнянням їх буде приведено до однаковго типу даних. В протилежному випадку завжди повертає False
<= Менше ніж або еквівалентно Визначає чи вірно те, що x менше за y або x 0 еквівалентний y x = 3; y = 6; x <= y поверне True.
>= Більше ніж або еквівалентно Визначає чи вірно те, що x більше за y або екввівалентний y x = 4; y = 3; x >= 3 поверне True.
== Еквівалентно до Визначає чи об’єкти еквівалентні (рівні) між собою x = 2; y = 2; x == y поверне True. x = 'str'; y = 'stR'; x == y поверне False. x = 'str'; y = 'str'; x == y поверне True.
!= Не еквівалентно до Визначає чи об’єкти не еквівалентні між собою x = 2; y = 3; x != y поверне True.
not Логічне НІ Якщо x є True, то поверне False. Якщо x є False, то поверне True x = True; not x поверне False. Операція not інвертує значення.
and Логічне І x and y поверне False якщо x є False, інакше значення False x = False; y = True; x and y поверне False оскільки x є False. У цьому випадку Python не буде перевіряти значення y тому що він знає, що лівий операнд оператора and дорівнює False з чого випливає, що весь вираз дорівнює False незалежно від значення всіх інших величин. Це називається скорочено оцінкою логічних операторів
or Логічне АБО Якщо x є True, то поверне True. Інакше поверне значення y x = True; y = False; x or y дає True. Тут також може бути виконана скорочена оцінка виразів

Скорочення для математичних операторів

Це загальноприйнята практика проводити якісь математичні операції над змінною, а потім привласнювати результати цієї операції тій же самій змінній.

Ти можеш написати як:

a = 2; a = a * 3;

так і:

a = 2; a *= 3

Пріоритети одних операторів над іншими (порядок обчислення)

Допустимо тобі треба обчислити вираз 2 + 3 * 4. Яку операцю виконаєш першою? Додавання чи віднімання? З курсу математики в школі тобі напевно відомо що операція множення має вищий пріоритет, тому виконується першою.

Нижче наведено таблицю в якій оператори представлені в порядку зростання від найменш пріоритетних до тих що мають найвищий пріоритет. Запам’ятай, що у програмі варто використовувати дужки для групування операторів і операндів для того, щоб явно вказати порядок обчислення крім того це робить текст програми більш читабельним.

Оператор Опис
lambda Лямбда-вираз
or Логічне АБО
and Логічне І
not x Логічне НІ
in, not in Тест на приналежність
is, is not Тест на тотожність
<,<=,>,>=,!=,== Порівняння
| Побітне АБО
^ Побітне ВИКЛЮЧНО АБО
& Побітне і
<<,>> Зміщеня
+,- Додавання і віднімання
*,/,//,% Множення, ділення, цілочислове ділення, залишок від ділення
+x,-x Позитивне, негативне
~x Побітне НІ
** Піднесення до степені
x.attribute Посилання на атрибут
x[index] Звернення за індексом
x[index1:index2] Зріз
f(arguments) Виклик функції
(expressions,…) Зв’язка або кортеж
[expressions,…] Список
{key:datum,…} Словник

Оператори які мають однаковий рівень пріоритету містяться в одному і тому самому рядку таблиці, наприклад оператор + та - мають однаковий пріорітет.

Зміна порядку обчислення

Для того, щоб зробити вирази більш зрозумілішими можна використовувати дужки. Наприклад, 2 + (3 * 4) однозначно легше проаналізувати ніж 2 + 3 * 4. Останній вираз потребує знання того, яку арифметичну дію слід виконувати першою. Як і з багатьма іншими речами дужки повинні використовуватися з розумом, тобто їх не варто ліпити де попало. Вони не мають бути зайвими.

Додатковою перевагою використання дужок є те, що вони допомагають нам змінювати порядок обчислення. Наприклад, якщо ти хочеш щоб операція додавання виконувалася першою, то напишеш так: (2 + 3) * 4.

 

Асоціативність

Оператори зазвичай асоційовані в порядку обчислення зліва направо. Наприклад, 2 + 3 + 4 вираховується як (2 + 3) + 4.

Але деякі оператори, як оператор привласнення, мають порядок зправа наліво. Таким чином a = b = c обробляється як a = (b = c).

 

Вирази

Приклад:

#!/usr/bin/python

# Filename: expression.py

 

length = 5

breadth = 2

 

area = length * breadth

 

print('Area is', area)

print('Perimeter is', 2 * (length + breadth))

Виведе:

$ python expression.py
Area is 10
Perimeter is 14

Як це працює:

Висота (length) і ширина (breadth) прямокутника містяться в змінних з назвами breadth і length. Ми їх використовуємо для того, щоб обчислити площу і периметр прямокутника. Ми зберегли результат виконаня виразу length * breadth у змінній з ім’ям area. І потім вивели на екран вміст цієї змінної користуючись функцією print. В іншому випадку ми зразу ж вивели результат виразу 2 * (length + breadth), передавши даний вираз як параметр функції print.

Також зауваж те як Python гарно і самостійно форматує вивід. При тому що ми не вказали символу пробілу в виводі на екран між 'Area is' та змінною area, Python вставив пробіл в потрібне місце замість нас. І ми отримали "чистий" і гарний вивід. Також текст програми став більш читабельним (оскільки нам не треба турбуватися про відступи в рядках які ми виводили на екран). Це приклад того як Python робить життя програміста простішим.

Підсумок

Ми побачили як використовувати оператори, операнди і вирази які є основними блоками для побудування будь-якої програми.

 

Автор перекладу - Дмитро Юрченко