O módulo code fornece as classes usadas para construir um loop interativo semelhante ao REPL do Python. Ele é útil em ferramentas internas, ensino e depuração local, nunca como executor seguro para usuários não confiáveis.
Compartilhe um 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
Entenda entrada incompleta
push() retorna verdadeiro quando a instrução precisa de mais linhas, como após for ou def. interact() gerencia prompts e leitura completa. Personalize mensagens para contexto, mas não esconda exceções necessárias ao diagnóstico.
Não trate REPL como sandbox
Restringir o dicionário inicial não impede imports, introspecção ou acesso a recursos do processo. Não exponha esse console na web ou a dados não confiáveis. Para depuração, limite o ambiente, registre uso e prefira sessões locais temporárias.
Continue estudando
Leia também depuração segura com PDB. A documentação oficial do Python, consultada em 22 de julho de 2026, detalha InteractiveInterpreter, InteractiveConsole e personalização de erros.