все Python 3astпонятие
ast.Invert
операторы
Маркер унарного оператора ~ в дереве ast: лежит в поле UnaryOp.op и полей не имеет.
Синтаксис
ast.Invert()
Не путайте с Not: '~x' — побитовое НЕ (Invert), 'not x' — логическое (Not), оба лежат в UnaryOp.op. '-5' — тоже UnaryOp (USub над Constant 5), а не отрицательная константа, хотя ast.literal_eval такие числа понимает. ~True равно -2, и с 3.12 эта запись выдаёт DeprecationWarning при выполнении — дерево от этого не меняется.
Примеры
import ast
u = ast.parse('~x', mode='eval').body
print(type(u).__name__, type(u.op).__name__) # → UnaryOp Invert
print(type(ast.parse('not x', mode='eval').body.op).__name__) # → Not
См. также
Открыть в полном глоссарииdocs.python.orgСообщить о неточности