все Python 3astпонятие
ast.BoolOp
выражения
Узел логической операции and или or: оператор в op и список операндов values. Цепочка одинаковых операторов собирается в один узел.
Синтаксис
ast.BoolOp(op, values)
a and b and c — это один BoolOp с тремя values, а не вложенные пары, в отличие от BinOp. Смешение операторов вкладывается по приоритету: a and b or c даёт Or, первый элемент которого — BoolOp с And. Отрицание not сюда не входит: это UnaryOp с Not. Побитовые & и | тоже не BoolOp, а BinOp.
Примеры
import ast
node = ast.parse('a and b and c', mode='eval').body
print(type(node.op).__name__, len(node.values)) # → And 3
mixed = ast.parse('a and b or c', mode='eval').body
print(type(mixed.op).__name__, type(mixed.values[0].op).__name__) # → Or And
См. также
Открыть в полном глоссарииdocs.python.orgСообщить о неточности