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.
| Categoria | Funções internas |
|---|---|
| Tipo | Função interna |
| Versão do Python | all |
📝 Sintaxe
compile(source, filename, mode)
⚙️ Parâmetros
| source Obrigatório | Source code: a string, bytes, or AST object. |
|---|---|
| filename Obrigatório | Filename shown in error messages; pass ' |
| mode Obrigatório | Compilation mode: 'exec', 'eval', or 'single'. |
| flags Opcional | Compiler flags, e.g. ast.PyCF_ONLY_AST.(Padrão:0) |
| dont_inherit Opcional | Whether to ignore surrounding compile flags.(Padrão:False) |
| optimize Opcional | Optimization level; -1 uses the interpreter's setting.(Padrão:-1) |
Retorno:A code object executable by exec() / eval().
💥 Exceções
SyntaxError— Raised when the source has a syntax error.ValueError— Raised when mode is invalid or the source contains null bytes.TypeError— Raised when source or mode has an invalid type.
▶ Exemplo
Edite o código, clique em Executar e veja o resultado no painel de saída:
Saída:
3
🏷️ Funções internas relacionadas
💡 Casos relacionados
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'.