все Python 3astпонятие
ast.Pow
операторы
Оператор возведения в степень ** в поле op узлов BinOp и AugAssign.
Синтаксис
ast.Pow()
** — единственный правоассоциативный бинарный оператор: 2 ** 3 ** 2 разбирается как 2 ** (3 ** 2), и вложенный BinOp оказывается справа, а не слева. Он связывает сильнее унарного минуса слева: -2 ** 2 — это UnaryOp над BinOp. Тот же Pow стоит в x **= 2, но уже в AugAssign; встроенный pow() — обычный Call.
Примеры
import ast
n = ast.parse('2 ** 3 ** 2', mode='eval').body
print(type(n.op).__name__, type(n.left).__name__, type(n.right).__name__) # → Pow Constant BinOp
print(2 ** 3 ** 2) # → 512
import ast
s = ast.parse('x **= 2').body[0]
print(type(s).__name__, type(s.op).__name__) # → AugAssign Pow
См. также
Открыть в полном глоссарииdocs.python.orgСообщить о неточности