Função built-in Python exec()
Esta função suporta a execução dinâmica de código Python. object deve ser uma string ou um objeto de código. Se for uma string, a string é analisada como uma suíte de instruções Python que é então executada (a menos que ocorra um erro de sintaxe) [...].
Introdução
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.
Sintaxe
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.
Uso Básico
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.
Executando Múltiplas Instruções
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.
Modificando Variáveis
x = 10
code = "x += 5"
exec(code)
print(x)
15
Usando globals e locals
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}
Criação Dinâmica de Função
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.
Tratamento de Erros
code = """
try:
print(undefined_variable)
except NameError as e:
print(f"Error: {e}")
"""
exec(code)
Error: name 'undefined_variable' is not defined
Nota de Segurança
user_input = input("Enter code to execute: ")
exec(user_input) # Caution: This can be a security risk if not properly sanitized.