Python Glossary English

все Python 3astфункция

ast.increment_lineno()

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

Сдвигает номера строк (lineno и end_lineno) всех узлов дерева на n. Нужна, когда разобранный фрагмент вставляется в другое место файла.

Синтаксис

ast.increment_lineno(node, n=1)

Типичный случай — фрагмент разобран отдельно, а в файле начинается со строки 10: без сдвига ошибки и трассировки укажут на строки 1, 2, 3. Колонки не меняются, дерево правится на месте и возвращается. Если код компилируется из строки, проще дописать в начало пустые строки, но для готового дерева нужна именно эта функция.

Примеры

import ast
tree = ast.parse('a = 1\nb = 2')
ast.increment_lineno(tree, 9)
print([(s.lineno, s.end_lineno) for s in tree.body])  # → [(10, 10), (11, 11)]
import ast
tree = ast.parse('x = 1\n1 / 0')
ast.increment_lineno(tree, 9)
try:
    exec(compile(tree, 'part.py', 'exec'))
except ZeroDivisionError as e:
    print(e.__traceback__.tb_next.tb_lineno)  # → 11

См. также

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