все Python 3astпонятие
ast.NotEq
операторы
Оператор сравнения != в списке ops узла Compare.
Синтаксис
ast.NotEq()
Сравнения в ast не бинарные: a != b != c — один Compare с двумя NotEq в ops и двумя comparators, а не вложенные узлы, и означает a != b and b != c — то есть a и c могут быть равны. Оператор лежит в списке, поэтому проверка «это !=» — isinstance(n.ops[i], ast.NotEq), а не поле op. Старого <> в Python 3 нет: ast.parse даст SyntaxError.
Примеры
import ast
n = ast.parse('a != b != c', mode='eval').body
print(type(n).__name__, [type(o).__name__ for o in n.ops], len(n.comparators)) # → Compare ['NotEq', 'NotEq'] 2
print(1 != 2 != 1) # → True
См. также
Открыть в полном глоссарииdocs.python.orgСообщить о неточности