Python Glossary English

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

ast.boolop

операторы

Абстрактный базовый класс логических операторов And и Or. Экземпляр лежит в поле op узла BoolOp.

Синтаксис

isinstance(node.op, ast.boolop)

Цепочка a and b and c — один BoolOp с тремя values, а не вложенные пары; а смешанное a or b and c — BoolOp(Or) с вложенным BoolOp(And) по приоритету. not сюда не входит: это унарный оператор Not из unaryop. Сравнение типа оператора делают через isinstance(node.op, ast.And), а не через ==.

Примеры

import ast
e = ast.parse('a and b and c', mode='eval').body
print(type(e.op).__name__, isinstance(e.op, ast.boolop), len(e.values))  # → And True 3
print([c.__name__ for c in ast.boolop.__subclasses__()])  # → ['And', 'Or']
import ast
e = ast.parse('a or b and c', mode='eval').body
print(type(e.op).__name__, type(e.values[1].op).__name__)  # → Or And

См. также

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