Python Glossary English

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

ast.Add

операторы

Класс оператора сложения +: экземпляр Add() стоит в поле op узла BinOp (a + b) и узла AugAssign (a += b).

Синтаксис

ast.Add()  # +

Для += отдельного класса нет: AugAssign хранит тот же Add, поэтому поиск сложений по BinOp пропустит составные присваивания. Склейка строк и списков — тоже Add: тип операндов парсер не знает. Унарный плюс +x — не Add, а UAdd внутри UnaryOp. Узел без полей и координат, а парсер раздаёт один и тот же экземпляр, так что проверяют isinstance(op, ast.Add).

Примеры

import ast
print(type(ast.parse('a + b', mode='eval').body.op).__name__)  # → Add
print(type(ast.parse('a += b').body[0].op).__name__)  # → Add
print(type(ast.parse('+a', mode='eval').body.op).__name__)  # → UAdd

См. также

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