Función eval() de Python

Python3 内置函数Funciones integradas de Python3


eval()Es una función integrada de Python que se utiliza para ejecutar expresiones de Python contenidas en cadenas.

eval()Recibe una cadena, la ejecuta como código Python y devuelve el resultado de la ejecución. Es una funcionalidad potente, pero un uso inadecuado puede conllevar riesgos de seguridad.

Significado de la palabra: evalSíevaluateAbreviatura de (evaluación).


Sintaxis básica y parámetros

Formato de sintaxis

eval(expression, globals, locals)

Descripción de parámetros

  • Parámetro expression:
    • Tipo: cadena
    • Descripción: la expresión de Python que se va a ejecutar.
  • Parámetro globals(opcional):
    • Tipo: diccionario
    • Descripción: el espacio de nombres global.
  • Parámetro locals(opcional):
    • Tipo: diccionario
    • Descripción: el espacio de nombres local.

Descripción de la función

  • Valor de retorno: devuelve el resultado de la ejecución de la expresión.
  • Advertencia de seguridad: no lo use con entradas no confiableseval(), lo que puede provocar ataques de inyección de código.

Ejemplos

Ejemplo 1: Uso básico

Ejemplo

# Calcula una expresión matemática
result = eval("1 + 2 + 3")
print(result)  # Salida: 6

# Usa variables
x = 10
result = eval("x * 2")
print(result)  # Salida: 20

# Expresión compleja
result = eval("2 ** 3 + 4 * 5")
print(result)  # Salida: 28

# Llamada a función
result = eval("len('hello')")
print(result)  # Salida: 5

Resultado esperado:

6
20
28
5

Análisis del código:

  1. eval()Puede ejecutar expresiones aritméticas.
  2. Puede hacer referencia a variables ya definidas.
  3. Puede llamar a funciones integradas.

Ejemplo 2: Entorno restringido

Ejemplo

# Limita las funciones y variables disponibles
x = 10
y = 20

# Crea un diccionario global restringido
safe_dict = {"x": x, "y": y, "abs": abs}

result = eval("x + y", safe_dict)
print(result)  # Salida: 30

# No permite acceder a funciones peligrosas
try:
    eval("__import__('os').system('ls')", {})
except NameError as e:
    print(f"Restricción de seguridad: {e}")

Resultado esperado:

30
安全限制: name '__import__' is not defined

Este ejemplo muestra cómo, al restringir el diccionario globals, se puede mejorareval()la seguridad.


Python3 内置函数Funciones integradas de Python3


Otras extensiones