Оператор assert у Python: як з ним правильно працювати
Оператор assert у мові Python виконує роль вбудованої інструкції для налагодження. Він дозволяє перевіряти справжність тверджень під час виконання програми. Якщо умова, вказана в assert, не виконується, то Python викликає помилку AssertionError. Цей механізм корисний при пошуку помилок у коді, а також для забезпечення того, що програма працює відповідно до очікуваних умов.
Синтаксис оператора assert виглядає наступним чином:
assert condition, message
Коли всередині коду виконується assert, він перевіряє умову. Якщо вона є відповідає істині (True), то програма продовжує працювати. Якщо вираз помилковий (False), то програма викликає помилку AssertionError та виводить необов’язкове повідомлення про помилку (якщо воно встановлено в параметрах).
Приклад використання assert у Python:
x = 5 assert x > 0, «Значення x має бути позитивним»
У цьому фрагменті коду, якщо x менше або дорівнює 0, то виникне помилка з повідомленням «Значення x має бути позитивним».
Оператор assert допомагає програмістам виявляти помилки та проблеми у роботі програми на ранніх етапах розробки. Замість того, щоб самостійно писати інструкції для перевірки умов, можна використовувати assert. Це помітно спрощує та прискорює процес налагодження.
Якщо в коді використовується assert, це також є видом документації, яка показує розробникам, які умови вважаються істинними в ті чи інші моменти виконання програми. Це допомагає працювати з великими проектами, де різні фрагменти коду взаємодіють між собою.
За допомогою оператора assert можна тестувати припущення про дані або стан роботи програми. Якщо ці припущення неправильні, то assert допоможе швидко виявити це. Наприклад, якщо функція передбачає, що список не повинен бути порожнім, для перевірки цього можна використовувати assert:
def calculate_average(numbers): assert len(numbers) > 0, "Список не повинен бути порожнім" return sum(numbers) / len(numbers)
У деяких ситуаціях assert буває корисним для перевірки відповідності даних певним критеріям. Це може стати в нагоді при роботі з даними, що надходять із зовнішніх джерел.
Оператор assert можна вимкнути для підвищення продуктивності. Для цього потрібно запустити інтерпретатор Python із опцією -O (optimize):
python -O my_script.py
Наявність у коді цього фрагменту робить так, що оператори assert будуть проігноровані і програма продовжить виконання без них. Подібна можливість може стати в нагоді, якщо assert використовувався для налагодження, а зараз виконання цих перевірок більше не потрібно.
def divide(a, b): assert b != 0, "Дільник не повинен бути нулем" return a/b
Якщо потрібно, щоб об’єкт знаходився в певному стані, то для перевірки цього можна також використовувати assert:
class BankAccount: def __init__(self, balance): self.balance = balance def withdraw(self, amount): assert amount > 0, "Сума зняття має бути позитивною" assert amount <= self.balance, "Недостатньо коштів" self.balance -= amount
Іноді буває корисно перевірити, чи функція повертає значення в потрібному форматі або діапазоні:
def square_root(x): assert x >= 0, "Число повинно бути невід'ємним" result = x ** 0.5 assert result >= 0, "Результат має бути невід'ємним" return result
Якщо передано негативне значення, з’явиться помилка «Число повинно бути невід’ємним».
Використовується, щоб перевірити, чи змінна має певний тип, наприклад, що змінні є числами або рядками.
def concatenate_strings(a, b): assert isinstance(a, str) and isinstance(b, str), "Обидва аргументи мають бути рядками" return a + b
Якщо аргументи a і b не рядки, програма викине AssertionError з повідомленням «Обидва аргументи мають бути рядками».
Корисно для перевірки, що значення змінної знаходиться у допустимому діапазоні.
temperature = 25 assert 0 <= temperature <= 100, "Температура має бути в діапазоні від 0 до 100"
Якщо значення temperature виходить за межі діапазону, програма викине помилку із зазначеним повідомленням.
Можна використовувати для перевірки, що в структурі даних немає значень, які дублюються.
def add_to_set(existing_set, item): assert item not in existing_set, "Елемент вже існує у безлічі" existing_set.add(item)
Якщо item вже знаходиться в existing_set, з’являється помилка «Елемент вже існує у безлічі».
Безумовно, assert це потужний інструмент, але його неправильне використання цілком може призвести до помилок. Тому:
Якщо вам знадобилася складніша перевірка чи контроль над помилками, радимо використовувати:
Приклад з try-except замість assert:
def divide(a, b): if b == 0: raise ValueError("Дільник не повинен бути нулем") return a/b
Як бачите, цей спосіб кращий, коли перевірка не повинна відключатися.
Оператор assert — це корисний інструмент для налагодження, документування та контролю коректності програми у Python, особливо в процесі розробки. Правильно використовуючи assert, ви зможете перевіряти припущення про роботу коду, виявляти помилки та зробити налагодження коду простішим.
Резиденти Дія.City сплатили до бюджету понад 8 млрд грн податків в І кварталі 2025 року.…
У Китаї закликають офісних працівників не працювати надто багато — держава сподівається, що вільний час…
Експерти звертають увагу на тривожну тенденцію: люди все частіше використовують ChatGPT, щоб визначити місцезнаходження, зображене…
Компанія JetBrains випустила нову версію мультимовного середовища розробки IntelliJ IDEA 2025.1. Оновлена IDE отримала численні…
Платформа обміну миттєвими повідомленнями Discord впроваджує функцію перевірки віку за допомогою сканування обличчя. Зараз вона…
Wikipedia намагається захистити себе від тисяч різноманітних ботів-скрейперів, які сканують дані цієї платформи для навчання…