El módulo code ofrece clases para crear un bucle interactivo parecido al REPL de Python. Sirve en herramientas internas, enseñanza y depuración local, pero no ejecuta de forma segura entradas no confiables.
Comparte un namespace controlado
from code import InteractiveConsole
namespace = {"tax_rate": 0.2}
console = InteractiveConsole(namespace)
more = console.push("total = 100 * (1 + tax_rate)")
assert more is False
assert namespace["total"] == 120.0
Reconoce la entrada incompleta
push() devuelve verdadero cuando una instrucción necesita más líneas, como después de for o def. interact() gestiona prompts y una sesión completa. Personaliza mensajes sin ocultar excepciones necesarias para diagnosticar.
No confundas un REPL con una sandbox
Restringir el diccionario inicial no impide imports, introspección o acceso a recursos del proceso. No expongas esta consola a la web ni a datos no confiables. Mantén las sesiones de depuración locales y temporales.
Sigue aprendiendo
Consulta también depuración segura con PDB. La documentación oficial de Python, consultada el 22 de julio de 2026, cubre InteractiveInterpreter, InteractiveConsole y personalización de errores.