exec() Executar bloco de código
Última atualização: 2026-09-22
exec() Executar bloco de código
exec() executa código Python (instruções ou bloco de código) contido em uma string, sem retornar valor.
| Categoria | Funções internas |
|---|---|
| Tipo | Função interna |
| Versão do Python | all |
📝 Sintaxe
exec(code[, globals[, locals]])
⚙️ Parâmetros
| code Obrigatório | Code to execute: a string, bytes, or code object. |
|---|---|
| globals Opcional | The global namespace dict.(Padrão:None) |
| locals Opcional | The local namespace dict.(Padrão:None) |
Retorno:None; statements in the code take effect in the caller.
💥 Exceções
SyntaxError— Raised when the code has a syntax error.TypeError— Raised when code has an invalid type or globals/locals is not a dict.
▶ Exemplo
Edite o código, clique em Executar e veja o resultado no painel de saída:
Saída:
6
y = 6
🏷️ Funções internas relacionadas
💡 Casos relacionados
Mais estudos de caso em breve — aguarde.
❓ Perguntas frequentes
QApós exec('y = 1'), posso usar y diretamente?
ANo topo de um módulo, sim; mas dentro de uma função não — atribuições dentro de exec não são gravadas nas variáveis locais da função. A forma segura é exec(code, ns) e depois ler de ns.
Qexec() tem valor de retorno?
ANão, sempre retorna None; o resultado da execução é lido pelo dicionário do namespace, ex.: exec('y = x * 2', ns) e depois ns['y'].
QQuando usar exec() e quando eval()?
APara executar múltiplas declarações ou definir funções use exec; para obter o valor de uma única expressão use eval. O aviso de segurança é o mesmo — nenhum dos dois deve executar entrada não confiável.
QComo usar o argumento globals de exec?
Aexec(code, {'x': 3}) faz o código rodar apenas no namespace dado, sem poluir o ambiente externo — técnica comum para isolar o ambiente de execução.