| title | Função Embutida exec() do Python - Folha de Dicas Python |
|---|---|
| description | Esta função suporta a execução dinâmica de código Python. O objeto deve ser uma string ou um objeto de código. Se for uma string, a string é analisada como um conjunto de instruções Python que são então executadas (a menos que ocorra um erro de sintaxe) [...]. |
A função exec() em Python é uma função built-in que permite executar dinamicamente código Python armazenado em uma string. Isso pode ser muito poderoso para cenários onde você deseja executar código fornecido por usuários, gerar e executar código em tempo de execução, ou até mesmo construir mini-interpretadores ou ambientes de script dentro de sua aplicação. No entanto, deve ser usada com cautela, pois pode introduzir riscos de segurança se não for tratada adequadamente.
exec(object[, globals[, locals]])object: A string contendo o código Python a ser executado.globals(opcional): Um dicionário representando o namespace global. Se não for fornecido, usa o namespace global atual.locals(opcional): Um dicionário representando o namespace local. Se não for fornecido, usa o namespace local atual.
code_to_execute = "print('Olá, exec()!')"
exec(code_to_execute)Olá, exec()!
A função exec() também pode ser usada com a função print() para exibir a saída no console.
code = """
for i in range(5):
print(i)
"""
exec(code)0
1
2
3
4
Neste exemplo, a função exec() é usada para executar um loop for que itera sobre um range de números e imprime cada número no console.
x = 10
code = "x += 5"
exec(code)
print(x)15
x = 5
code = "x = x * 2"
globals_dict = {"x": 10}
locals_dict = {"x": 20}
exec(code, globals_dict, locals_dict)
print(x)
print(globals_dict)
print(locals_dict)5
{'x': 10}
{'x': 40}
def create_dynamic_function(name, args):
code = f"def {name}({', '.join(args)}): return sum({args})"
exec(code)
create_dynamic_function("add_numbers", ["a", "b", "c"])
result = add_numbers(2, 3, 5)
print(result)10
Neste exemplo, a função exec() é usada para criar uma função dinâmica que recebe uma lista de argumentos e retorna sua soma.
code = """
try:
print(undefined_variable)
except NameError as e:
print(f"Error: {e}")
"""
exec(code)Error: name 'undefined_variable' is not defined
user_input = input("Enter code to execute: ")
exec(user_input) # Caution: This can be a security risk if not properly sanitized.compile()eval()globals()locals()- Tratamento de Exceções
- Depuração