Python Glossary English

все Python 3Исключенияконструкция

assert

проверка

Утверждение — проверяет условие и вызывает AssertionError при False. Используется для отладки и тестов. Отключается с -O.

Синтаксис

assert condition, 'message'

Главная ловушка — лишние скобки: assert (x > 0, 'сообщение') проверяет непустой кортеж, а он всегда истинен, так что такая проверка не сработает никогда (интерпретатор лишь предупредит). И раз под python -O все assert вырезаются, ими нельзя проверять пользовательский ввод, права или данные извне — там нужен обычный if с raise; assert описывает инварианты, которые не могут нарушиться, если код верен.

Примеры

def divide(a, b):
    assert b != 0, 'Denominator must not be zero'
    return a / b
print(divide(10, 2))  # → 5.0
try:
    divide(1, 0)
except AssertionError as e:
    print(e)  # → Denominator must not be zero
def get_positive(n):
    assert isinstance(n, int) and n > 0, f'Expected positive int, got {n!r}'
    return n
print(get_positive(5))  # → 5
def test_add():
    assert 1 + 1 == 2
    assert 'hello'.upper() == 'HELLO'
    assert len([1,2,3]) == 3
test_add()  # ничего не печатает — все assert верны
# assert с коллекцией
def first(lst):
    assert len(lst) > 0, 'List is empty'
    return lst[0]
print(first([10,20]))  # → 10
# ВАЖНО: assert отключается при python -O
# Не используй для валидации входных данных в продакшн!
x = 10
assert x > 0  # только для разработки

См. также

Открыть в полном глоссарииdocs.python.orgСообщить о неточности