COSTA NORTE DE TENERIFE DESEE LAS ALTURAS DE SAN JOSÉ DE LOS LLANOS, CERCA DE EL TANQUE, CENTRO NORTE DE TENERIFE. |
La función eval() guarda ciertas similitudes con la función int(), que convierte una string, una cadena de caracteres literales, en un número entero, siempre que sea posible. En este aspecto su comportamiento es muy similar si pasamos un número entero (en base 10) como una cadena de caracteres, esto es, entrecomillados, tanto en un caso como en el otro:
Sin embargo, donde la función int() no puede devolver un entero cuando pasamos como literal un número decimal, por ejemplo, "16.61", la función eval() sí que puede hacerlo, por lo que actúa de manera análoga a como lo haría la función float(), que sí convierte a decimal un número de punto flotante que le pasemos como literal.
Observaremos en el ejemplo que mostramos a continuación que la función int() aplicada sobre un número decimal, devuelve solo la parte entera del número, obviando la decimal.
OBSERVEMOS EL COMPORTAMIENTO PECULIAR DE int() Y eval() CUANDO LES PASAMOS CEROS POR EL LADO IZQUIERDO: EN EL PRIMER CASO, SE NOS DEVUELVE LA PARTE ENTERA; EN EL SEGUNDO, SE LANZA UN ERROR. COMPARTEN, SIN EMBARGO, UN COMPORTAMIENTO ANÁLOGO CUANDO TENEMOS CARACTERES LITERALES VACÍOS O CUANDO ESTOS SON "REALES". VEÁMOSLO:
Como sugiere su nombre, estamos ante una función evaluadora, que evalúa, en esta ocasión, strings (cadenas de texto) que pueden contener cualquier tipo de dato válido en Python (listas, tuplas, conjuntos, etc.), incluidas expresiones aritméticas o algoritmos, devolviéndonos un resultado que mostrará el tipo de dato que podríamos obtener si eliminásemos las comillas. Veamos un ejemplo:
Como ya hemos visto en ejemplos anteriores, cuando eval() no es capaz de determinar el tipo de dato que se le pasa como argumento, se mostrará un error.
Su mayor y más palmaria utilidad pasa por emplear la función eval() inclusa en funciones que suelen ingresar o devolver cadenas, como la función input():
x = int(eval(input("Introduce un número entero: ")))
Observemos estas propuestas de uso de la función eval():
Lo que sucede es que el intérprete de Python es capaz de "entender" la expresión o algoritmo que pasamos como argumento como tipo de dato string, manejando incluso elementos externos, como observamos en la ´lista' del ejemplo.
Terminamos con un ejemplo más elaborado. No importa que aún no entendamos la sintaxis def que se muestran: quedémonos por ahora con el resultado:
No hay comentarios:
Publicar un comentario