Volver a la página principal
miércoles 25 septiembre 2024
41

Cómo ejecutar código dinámico en Python con exec()

La función exec() en Python permite ejecutar código Python dinámicamente desde una cadena o un objeto compilado. Esto es útil cuando necesitas construir y ejecutar código de manera flexible durante la ejecución del programa.

¿Qué es exec() en Python?

exec() es una función incorporada que ejecuta el código Python que le pases como argumento. Este código puede ser una cadena o un objeto de código compilado. A diferencia de eval(), que solo puede evaluar expresiones simples, exec() puede ejecutar bloques completos de código, incluidos definiciones de funciones, clases y estructuras de control.

Sintaxis básica

exec(object[, globals[, locals]])
  • object: El código que se ejecutará, puede ser una cadena de código o un objeto de código compilado.
  • globals *(opcional)*: Un diccionario que define el entorno global donde se ejecutará el código.
  • locals *(opcional)*: Un diccionario que define el entorno local.

Ejemplos de uso de exec() en Python

Ejecutar una cadena de código Python

codigo = """
for i in range(3):
    print(f'Valor: {i}')
"""
exec(codigo)

En este ejemplo, exec() ejecuta un bucle for desde una cadena de código. Esto imprime los valores de 0 a 2 en la consola.

Definir una función dinámicamente

codigo = """
def saludar():
    print('¡Hola, Mundo!')
"""

exec(codigo)
saludar()  # Llama a la función definida dinámicamente

Aquí, exec() define una función saludar() dentro de la cadena de código, que luego se puede llamar como cualquier función normal.

Usar exec() con variables globales y locales

globals_dict = {'x': 5}
locals_dict = {}

codigo = """
y = x + 10
"""

exec(codigo, globals_dict, locals_dict)
print(locals_dict['y'])  # Muestra 15

En este ejemplo, exec() usa los diccionarios globals_dict y locals_dict para gestionar las variables globales y locales durante la ejecución del código.

Referencia oficial

Puedes consultar más sobre exec() en la documentación oficial de Python.

Etiquetas:
python
Compartir:
Creado por:
Author photo

Jorge García

Fullstack developer