Оператор 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__ є незаконним. Значення для вбудованої змінної визначається під час запуску інтерпретатора.