Python Glossary English

Python 3.14+astфункция

ast.compare()

вспомогательные функции

Рекурсивно сравнивает два дерева AST по структуре и значениям полей. Отвечает, одинаков ли код с точностью до форматирования. Появилась в 3.14.

Синтаксис

ast.compare(a, b, /, *, compare_attributes=False)

Оператор == у узлов сравнивает объекты по идентичности, поэтому два одинаковых разбора дают False — нужна именно эта функция. По умолчанию позиции (lineno, col_offset) игнорируются, и 'x=1' равно 'x = 1 # c'; compare_attributes=True сравнивает и их. До 3.14 то же получают сравнением строк ast.dump() в одной версии Python.

Примеры

# Python 3.14+
import ast
a = ast.parse('x=1')
b = ast.parse('x  =  1  # c')
print(a == b)  # → False
print(ast.compare(a, b))  # → True
print(ast.compare(a, b, compare_attributes=True))  # → False
import ast
a = ast.parse('x=1')
b = ast.parse('x  =  1  # c')
print(ast.dump(a) == ast.dump(b))  # → True — способ до 3.14

См. также

Открыть в полном глоссарииdocs.python.orgСообщить о неточности