все 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Сообщить о неточности