все Python 3astпонятие
ast.BitAnd
операторы
Класс побитового оператора &: экземпляр BitAnd() стоит в op узла BinOp или AugAssign (a &= b). Тот же узел даёт и пересечение множеств.
Синтаксис
ast.BitAnd() # &
Парсер не знает типов, поэтому s1 & s2 для множеств и 6 & 3 для чисел дают одинаковый BinOp с BitAnd. Логическое and сюда не относится — это And в BoolOp, и путаница между ними в анализаторе даёт ложные срабатывания. Узел без полей: проверяют isinstance(node.op, ast.BitAnd).
Примеры
import ast
for src in ['6 & 3', 's1 & s2', 'a and b']:
node = ast.parse(src, mode='eval').body
print(type(node).__name__, type(node.op).__name__)
# → BinOp BitAnd / BinOp BitAnd / BoolOp And
См. также
Открыть в полном глоссарииdocs.python.orgСообщить о неточности