Python Glossary English

все Python 3astпонятие

ast.Lt

операторы

Маркер сравнения < в дереве ast: лежит в поле Compare.ops и полей не имеет.

Синтаксис

ast.Lt()

Python разбирает '1 < x < 10' как одно сравнение: Compare(left=1, ops=[Lt, Lt], comparators=[x, 10]). Анализатору, ищущему «x меньше 10», нужно пройти ops и comparators парами, а не смотреть только на left. Узлы-маркеры сравнивают по типу (isinstance), а не через ==: у узлов ast нет __eq__, и ast.Lt() == ast.Lt() — False.

Примеры

import ast
c = ast.parse('1 < x < 10', mode='eval').body
pairs = [(type(o).__name__, ast.unparse(v)) for o, v in zip(c.ops, c.comparators)]
print(pairs)  # → [('Lt', 'x'), ('Lt', '10')]

См. также

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