X Tutup
Skip to content

Latest commit

 

History

History
146 lines (113 loc) · 4.21 KB

File metadata and controls

146 lines (113 loc) · 4.21 KB
title Función incorporada exec() de Python - Hoja de trucos de Python
description Esta función permite la ejecución dinámica de código Python. El objeto debe ser una cadena o un objeto de código. Si es una cadena, se analiza como un bloque de sentencias de Python que luego se ejecuta (a menos que ocurra un error de sintaxis) [...].
Función incorporada exec() de Python De la documentación de Python 3 Esta función admite la ejecución dinámica de código Python. object debe ser una cadena o un objeto de código. Si es una cadena, la cadena se analiza como un bloque de sentencias de Python que luego se ejecuta (a menos que ocurra un error de sintaxis) [...].

Introducción

La función exec() en Python es una función incorporada que permite ejecutar dinámicamente código Python almacenado en una cadena. Esto puede ser muy potente para escenarios en los que se desea ejecutar código proporcionado por los usuarios, generar y ejecutar código en tiempo de ejecución, o incluso crear mini intérpretes o entornos de scripting dentro de su aplicación. Sin embargo, debe usarse con precaución, ya que puede introducir riesgos de seguridad si no se maneja correctamente.

Sintaxis

exec(object[, globals[, locals]])
  • object: La cadena que contiene el código Python a ejecutar.
  • globals (opcional): Un diccionario que representa el espacio de nombres global. Si no se proporciona, utiliza el espacio de nombres global actual.
  • locals (opcional): Un diccionario que representa el espacio de nombres local. Si no se proporciona, utiliza el espacio de nombres local actual.

Uso Básico

code_to_execute = "print('¡Hola, exec()!')"
exec(code_to_execute)
¡Hola, exec()!

La función exec() también se puede utilizar con la función print() para mostrar la salida en la consola.

Ejecución de Múltiples Sentencias

code = """
for i in range(5):
    print(i)
"""
exec(code)
0
1
2
3
4

En este ejemplo, la función exec() se utiliza para ejecutar un bucle for que itera sobre un range de números e imprime cada número en la consola.

Modificación de Variables

x = 10
code = "x += 5"
exec(code)
print(x)
15

Uso de globals y 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}

Creación Dinámica de Funciones

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

En este ejemplo, la función exec() se utiliza para crear una función dinámica que toma una lista de argumentos y devuelve su suma.

Manejo de Errores

code = """
try:
    print(undefined_variable)
except NameError as e:
    print(f"Error: {e}")
"""
exec(code)
Error: name 'undefined_variable' is not defined

Nota de Seguridad

user_input = input("Introduce el código a ejecutar: ")
exec(user_input)  # Precaución: Esto puede ser un riesgo de seguridad si no se sanitiza adecuadamente.

Enlaces Relevantes

  • compile()
  • eval()
  • globals()
  • locals()
  • Manejo de Excepciones
  • Depuración
X Tutup