все Python 3astпонятие
ast.operator
операторы
Абстрактный базовый класс бинарных арифметических и битовых операторов: Add, Sub, Mult, Div, FloorDiv, Mod, Pow, MatMult, сдвиги и битовые.
Синтаксис
isinstance(node.op, ast.operator)
Тот же класс оператора стоит и в BinOp (a + b), и в AugAssign (a += b): по op их не различить, смотрите на тип самого узла. Сравнения (<, ==) и логика (and) сюда не входят — у них свои cmpop и boolop. Экземпляры операторов при разборе общие: все Add() в дереве — один и тот же объект.
Примеры
import ast
tree = ast.parse('y = a + b\ny += 1')
ops = [n.op for n in ast.walk(tree) if isinstance(n, (ast.BinOp, ast.AugAssign))]
print([type(o).__name__ for o in ops], ops[0] is ops[1]) # → ['Add', 'Add'] True
print(len(ast.operator.__subclasses__())) # → 13
См. также
Открыть в полном глоссарииdocs.python.orgСообщить о неточности