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.