tokenize divide fonte Python em tokens com tipo, texto e posição. Ao contrário da AST, ele preserva comentários e detalhes de formatação úteis para formatadores e verificadores.

Exemplo prático

from io import BytesIO
from tokenize import NAME, generate_tokens

source = "total = price * quantity"
names = [token.string for token in generate_tokens(iter(source.splitlines(True)).__next__) if token.type == NAME]
print(names)

Tokens e árvore têm papéis diferentes

Use tokens quando espaços, comentários ou grafia importam; use AST quando precisa entender expressões e comandos. Prefira tokenize.open() ao abrir arquivos, pois ele respeita a declaração de codificação.

Transformações exigem testes

untokenize() ajuda a reconstruir fonte, mas uma alteração ingênua pode mudar espaçamento ou semântica. Teste código válido, inválido, strings multilinha e diferentes finais de linha.

Continue estudando

Leia também AST em Python: analise código e literais com segurança e PEP 8 Python: Guia Completo de Estilo e Boas Práticas. A documentação oficial do Python, consultada em 22 de julho de 2026, detalha a API e o comportamento entre versões.