все Python 3astпонятие
ast.Compare
выражения
Узел сравнения: левый операнд в left, списки операторов ops и правых операндов comparators. Цепочка a < b < c — один узел.
Синтаксис
ast.Compare(left, ops, comparators)
Даже одно сравнение a == b хранит оператор и операнд списками: ops[0] и comparators[0]. Цепочка 0 < x <= 10 даёт два оператора и два операнда, а не BoolOp с and — хотя исполняется как and. Сюда же попадают in, not in, is и is not. Присваивание = — не сравнение, а отдельная инструкция Assign.
Примеры
import ast
node = ast.parse('0 < x <= 10', mode='eval').body
print(node.left.value, [type(op).__name__ for op in node.ops]) # → 0 ['Lt', 'LtE']
print(len(node.comparators)) # → 2
См. также
Открыть в полном глоссарииdocs.python.orgСообщить о неточности