Оператори і вирази в 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 робить життя програміста простішим.
Підсумок
Ми побачили як використовувати оператори, операнди і вирази які є основними блоками для побудування будь-якої програми.
Автор перекладу - Дмитро Юрченко