все Python 3astпонятие
ast.Not
операторы
Оператор логического отрицания not в поле op узла UnaryOp.
Синтаксис
ast.Not()
not — унарная операция, поэтому живёт в UnaryOp, тогда как and и or — в BoolOp. Составное not in — отдельный оператор NotIn внутри Compare, а не Not; зато not a in b разбирается как UnaryOp(Not, Compare(In)). Результат одинаков, но правило линтера «пишите not in» ищет именно второй вид.
Примеры
import ast
n = ast.parse('not a in b', mode='eval').body
print(type(n).__name__, type(n.op).__name__, type(n.operand.ops[0]).__name__) # → UnaryOp Not In
m = ast.parse('a not in b', mode='eval').body
print(type(m).__name__, type(m.ops[0]).__name__) # → Compare NotIn
См. также
Открыть в полном глоссарииdocs.python.orgСообщить о неточности