все Python 3astпонятие
ast.Gt
операторы
Маркер сравнения > в дереве ast: лежит в поле Compare.ops и полей не имеет.
Синтаксис
ast.Gt()
Цепочка 'a > b > c' — один Compare с двумя операторами в ops и двумя значениями в comparators, а не два вложенных сравнения, как и вычисляет её Python. Узлы-маркеры сравнивают по типу (isinstance), а не через ==: у узлов ast нет __eq__, и ast.Gt() == ast.Gt() — False.
Примеры
import ast
c = ast.parse('a > b > c', mode='eval').body
print(type(c).__name__, [type(o).__name__ for o in c.ops]) # → Compare ['Gt', 'Gt']
print(c.left.id, [x.id for x in c.comparators]) # → a ['b', 'c']
print(ast.Gt() == ast.Gt()) # → False
См. также
Открыть в полном глоссарииdocs.python.orgСообщить о неточности