Python Glossary English

все 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Сообщить о неточности