все Python 3astпонятие
ast.Assert
инструкции
Узел инструкции assert: проверяемое выражение в test и необязательное сообщение в msg.
Синтаксис
ast.Assert(test, msg=None)
Скобки вокруг обоих частей — assert (x, 'текст') — превращают test в Tuple, который всегда истинен; в дереве это видно как test типа Tuple, и именно так ловят эту ошибку. Без сообщения msg равно None. Под python -O компилятор выбрасывает весь узел, поэтому проверять ввод пользователя через assert нельзя.
Примеры
import ast
node = ast.parse('assert x > 0, "negative"').body[0]
print(type(node.test).__name__, node.msg.value) # → Compare negative
bad = ast.parse('assert (x, "negative")').body[0]
print(type(bad.test).__name__, bad.msg) # → Tuple None
См. также
Открыть в полном глоссарииdocs.python.orgСообщить о неточности