Diferencias entre `input` y` raw_input`

En un tutorial, leí que hay una diferencia entre input y raw_input . Descubrí que cambiaron el comportamiento de estas funciones en Python 3.0. ¿Cuál es el nuevo comportamiento?

¿Y por qué en la consola de python este intérprete?

 x = input() 

Envía un error, pero si lo pongo en un archivo.py y lo ejecuto, ¿no es así?

En Python 2.x, raw_input() devuelve una cadena y input() evalúa la entrada en el contexto de ejecución en el que se llama

 >>> x = input() "hello" >>> y = input() x + " world" >>> y 'hello world' 

En Python 3.x, la input se ha eliminado y la función anteriormente conocida como raw_input ahora se raw_input . Así que tienes que llamar manualmente compile y luego eval si quieres la funcionalidad anterior.

 python2.x python3.x raw_input() --------------> input() input() -------------------> eval(input()) 

En 3.x, la sesión anterior es así.

 >>> x = eval(input()) 'hello' >>> y = eval(input()) x + ' world' >>> y 'hello world' >>> 

Entonces, probablemente estaba recibiendo un error en el intérprete porque no estaba poniendo comillas alrededor de su entrada. Esto es necesario porque está evaluado. ¿Dónde estás obteniendo un error de nombre?

entrada () vs raw_input ()

raw_input recostack los caracteres que el usuario escribe y los presenta como una cadena. input () no solo evalúa números, sino que trata cualquier entrada como código Python e intenta ejecutarlo. Un usuario experto pero malicioso puede escribir un comando de Python que incluso puede eliminar un archivo. Manténgase en raw_input () y convierta la cadena al tipo de datos que necesita usando las funciones de conversión incorporadas de Python.

También la entrada (), no está a salvo de los errores del usuario! Espera una expresión de Python válida como entrada; Si la entrada no es sintácticamente válida, se generará un SyntaxError.

Es sencillo:

  1. raw_input() devuelve valores de cadena
  2. mientras input() devuelve valores enteros

Por ejemplo:

1.

 x = raw_input("Enter some value = ") print x 

Salida:

 Enter some value = 123 '123' 

2.

 y = input("Enter some value = ") print y 

Salida:

 Enter some value = 123 123 

Por lo tanto, si realizamos x + x = saldrá como 123123

mientras que si realizamos y + y = saldrá como 246