tokenize divide el código Python en tokens con tipo, texto y posición. A diferencia del AST, conserva comentarios y detalles de formato útiles para formatters y verificadores.
Ejemplo práctico
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 y árboles cumplen funciones distintas
Usa tokens cuando importen espacios, comentarios o grafía; usa AST cuando necesites comprender expresiones e instrucciones. Prefiere tokenize.open() para respetar la codificación declarada.
Las transformaciones requieren pruebas
untokenize() ayuda a reconstruir código, pero un cambio ingenuo puede alterar espacios o semántica. Prueba código válido e inválido, cadenas multilínea y diferentes finales de línea.
Sigue aprendiendo
Consulta también AST en Python: analiza código y literales con seguridad y PEP 8 Python: Guía Completa de Estilo y Buenas Prácticas. A documentación oficial de Python, consultada el 22 de julio de 2026, detalla la API y el comportamiento entre versiones.