Python - Para que sirve eval() ?

   
Vista:
Imágen de perfil de Cristofer

Para que sirve eval() ?

Publicado por Cristofer (34 intervenciones) el 27/11/2014 02:19:37
Hola lo que pasa es que estoy aprendiendo Python y no e tenido ningún problema, pero lo que pasa es que tengo la duda de para que sirve eval() ya que estaba usando NinjaIDE y este IDE tiene integrado un sistema para apoyar la migración de python 2.x a python 3.x haciendo recomendaciones constantemente para que nuestro código sea lo mas "Actualizado posible" y bien este es mi codigo:

1
l=int(input("Lado: "))

y este es el codigo que me recomienda el dichoso "corrector"

1
l=int(eval(input("Lado: ")))

Es por esto que me surgio de cual es la utilidad de eval()
Muchas gracias de antemano ¡ :D
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de Jorge De Los Santos

Para que sirve eval() ?

Publicado por Jorge De Los Santos (54 intervenciones) el 27/11/2014 07:36:34
Hola Cristofer.

En Python 2.x se tienen disponibles las funciones raw_input() e input(). La primera captura la entrada del usuario y devuelve una cadena, en cambio input() evalúa lo que el usuario inserta, es decir, para Python 2.x la función input() equivale a tener eval(raw_input()).


Sin embargo, para Python 3.x la función raw_input() ha pasado a llamarse input(), y lo que en 2.x era input ha sido "descontinuada", dado que puedes emularla utilizando eval(input()), que es justamente la recomendación que te hace.

Ahora, respecto a la función eval(), lo que hace es evaluar un string, por ejemplo:

1
2
3
4
>>> x = 10
>>> y = 5
>>>  print eval('x+y')
15


De modo que el editor te indica esa corrección para evitar errores de conversión. Dado que si en algún momento corrieras ese script en Python 3.x y tu introduces por ejemplo 5.2, entonces lanzaría una excepción. En cambio, si utilizas la recomendación que te hace, primero se convierte a un tipo float mediante eval() y luego hace la conversión explícita al tipo entero.



Saludos.

Jorge De Los Santos.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar
Imágen de perfil de xve

Para que sirve eval() ?

Publicado por xve (1235 intervenciones) el 27/11/2014 07:41:36
Excelente Jorge!!!
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Cristofer

Para que sirve eval() ?

Publicado por Cristofer (34 intervenciones) el 28/11/2014 01:56:46
Hola gracias por tu respuesta pero sabes al usar eval el código no funciona como lo hace sin eval mira este es:

1
2
3
4
5
6
7
8
while True:
        try:
            print ("Ingrese la medida de un lado")
            l = int(eval(input("Lado: ")))
            return l
            break
        except:
            print("Solo ingrese digitos")

Al escribir un numero me manda el mensaje "Solo ingrese dígitos" en cambio sin eval el programa se ejecuta sin problemas
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar