Оператор 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, ви зможете перевіряти припущення про роботу коду, виявляти помилки та зробити налагодження коду простішим.
Sigma Software, що є підрозділом Sigma Software Group, заявила про зміну генерального директора. Компанію очолить…
Microsoft готує додати у Windows 11 новий «легкий» текстовий редактор Edit. Він важить всього 230…
Компанія OpenAI у найближчі тижні планує випустити оновлення для тарифного плану ChatGPT Pro, доступ до…
Керівники компаній часто вводять в оману, розповідаючи, що штучний інтелект лише підвищить продуктивність і не…
Уряд США пропонує до $10 мільйонів за інформацію про місцезнаходження розробника шкідливого програмного забезпечення RedLine…
Google оголосила про оновлення своєї LLM-моделі Gemini 2.5 Pro, яка, за твердженням компанії, стала краще…