La función eval() en Python

Hiten Kanwar 3 enero 2023
La función eval() en Python

Python es un lenguaje de programación de alto nivel interpretado. Tiene una estructura de código limpia y legibilidad con su notable sangría significativa.

La función eval() analiza el argumento de la expresión y luego lo evalúa como una expresión de Python.

La sintaxis de la función eval() se proporciona a continuación.

eval(expression, [globals[, locals]])

El valor de retorno se basará y será el resultado de la expresión evaluada.

Evaluamos una simple adición en el ejemplo siguiente.

x = 2
eval("x+5")

Producción :

7

Los argumentos de la función eval() son una cadena y argumentos opcionales de globals y locals. Si se proporcionan globals, debe ser un diccionario. Los locals pueden ser cualquier objeto cartográfico.

Suponga que se proporciona el diccionario global y no se proporciona el valor de la clave. Se genera una referencia al diccionario del módulo incorporado builtins y se inserta debajo de la sección clave antes de que la expresión comience a analizar.

Esto sugiere a grandes rasgos que la expresión suele tener acceso completo al módulo estándar builtins. Si no se proporciona el objeto locals, el valor predeterminado es el diccionario global. Además, en un escenario en el que se omiten ambos diccionarios, la expresión se ejecuta con globals y locals en el entorno donde se llama a la función eval().

Hay ciertas funciones presentes dentro del módulo builtins que probablemente pueden dañar significativamente el sistema. Pero ciertamente es posible bloquear cualquiera de las cosas que puedan resultar sospechosas.

Por ejemplo, considere un ejemplo para crear una lista que represente el número de núcleos disponibles dentro del sistema.

from os import cpu_count

eval("[1, cpu_count()]")

Producción :

[1, 8]
Nota
Dado que esta función evalúa cada cadena como código, hay que tener mucho cuidado al usar esto. Alguien puede usarlo para ejecutar código en la computadora como un agujero de seguridad. Por ejemplo, eval(input()) le pedirá al usuario que ingrese la cadena y la ejecute como código. Si se importa el módulo os, se pueden realizar todo tipo de acciones en el dispositivo, como eliminar archivos y manipular el sistema.