Оператор assert
Оновлено: 24.04.2023
Оператори Assert — це зручний спосіб вставити в програму твердження налагодження:
assert_stmt ::= "assert" expression ["," expression]
Проста форма, assert expression, еквівалентна
if __debug__:
if not expression: raise AssertionError
Розширена форма, assert expression1, expression2, еквівалентна
if __debug__:
if not expression1: raise AssertionError(expression2)
Ці еквівалентності припускають, що __debug__ і AssertionError посилаються на вбудовані змінні з цими іменами. У поточній реалізації вбудована змінна __debug__ має значення True за звичайних обставин, False, коли запитується оптимізація (параметр командного рядка -O). Поточний генератор коду не видає код для оператора assert, коли під час компіляції запитується оптимізація. Зауважте, що немає потреби включати вихідний код для виразу, що не вдалося виконати, у повідомленні про помилку; він буде відображатися як частина трасування стека.
Присвоєння __debug__ є незаконним. Значення для вбудованої змінної визначається під час запуску інтерпретатора.