compile() Compila o código-fonte em um objeto de código

Última atualização: 2026-09-22

compile() Compila o código-fonte em um objeto de código

compile() compila uma string de código-fonte em um objeto de código, que pode ser entregue a exec() / eval() para execução.

CategoriaFunções internas
TipoFunção interna
Versão do Pythonall

📝 Sintaxe

compile(source, filename, mode)

⚙️ Parâmetros

source ObrigatórioSource code: a string, bytes, or AST object.
filename ObrigatórioFilename shown in error messages; pass '' for inline source.
mode ObrigatórioCompilation mode: 'exec', 'eval', or 'single'.
flags OpcionalCompiler flags, e.g. ast.PyCF_ONLY_AST.(Padrão:0)
dont_inherit OpcionalWhether to ignore surrounding compile flags.(Padrão:False)
optimize OpcionalOptimization level; -1 uses the interpreter's setting.(Padrão:-1)

Retorno:A code object executable by exec() / eval().

💥 Exceções

▶ Exemplo

Edite o código, clique em Executar e veja o resultado no painel de saída:

Saída:

3
Mais estudos de caso em breve — aguarde.

❓ Perguntas frequentes

QQual é a diferença entre os três modes de compile()?
A'exec' compila um bloco de declarações (if, def, for etc.); 'eval' compila uma única expressão (pode ser avaliada); 'single' compila uma única declaração interativa e imprime o resultado de expressões.
QO que passar para o argumento filename?
AO código embutido gerado dinamicamente costuma usar '' por convenção; ele aparece apenas em mensagens de erro (traceback) e não tem relação com arquivos reais — nada é lido de verdade.
QComo executar o resultado de compile()?
APasse o objeto de código retornado para exec(code) ou eval(code): código no modo 'exec' usa exec, e no modo 'eval' usa eval.
QO que acontece se o código-fonte tiver erro de sintaxe?
ALevanta SyntaxError já na fase de compile(), expondo o problema mais cedo do que executar a string com exec — adequado a cenários de 'compilar/validar antes e executar depois'.
Web-Tutorial.com

Equipe Técnica Web-Tutorial

Uma plataforma de tutoriais mantida por diversos desenvolvedores. Cada tutorial é escrito e revisado por profissionais da área correspondente. Trabalhamos para manter nosso conteúdo preciso e confiável — se encontrar algum problema, avise-nos.

100%