Python Glossary English

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

ast.LShift

операторы

Маркер бинарного оператора << в дереве ast: лежит в поле BinOp.op и AugAssign.op и полей не имеет.

Синтаксис

ast.LShift()

Знак '<<=' — не отдельный узел: это AugAssign с тем же LShift в op, поэтому поиск сдвигов должен смотреть и в BinOp, и в AugAssign. Приоритет сдвига ниже сложения: 'a << b + 1' даёт BinOp(LShift) с BinOp(Add) справа — ast.unparse это покажет без лишних скобок.

Примеры

import ast
b = ast.parse('a << b + 1', mode='eval').body
print(type(b.op).__name__, type(b.right.op).__name__)  # → LShift Add
aug = ast.parse('x <<= 2').body[0]
print(type(aug).__name__, type(aug.op).__name__)  # → AugAssign LShift

См. также

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