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.