¿Cuál es la diferencia entre raw_input() y input() en python3.x?
python-3.x (6)
¿Cuál es la diferencia entre raw_input()
y input()
en python3.x?
Python 2:
raw_input()
toma exactamente lo que el usuario escribió y lo devuelve como una cadena.input()
primero toma elraw_input()
y luego realiza unaeval()
también.
La principal diferencia es que input()
espera una declaración de Python sintácticamente correcta donde raw_input()
no lo hace.
Python 3:
-
raw_input()
fue renombrado ainput()
así que ahorainput()
devuelve la cadena exacta. - Se ha eliminado la
input()
.
Si desea usar la input()
, lo que significa que necesita evaluar una entrada de usuario como una declaración de python, debe hacerlo manualmente utilizando eval(input())
.
Ambos son iguales, la única diferencia es usarlos en sus respectivas versiones de Python.
En python2:
raw_input (): toma exactamente el tipo de usuario y lo devuelve como un objeto de cadena.
input (): toma exactamente lo que se usó y luego convierte el tipo de objeto ingresado. Ejemplo. utilizado ingresado [10,20,30], luego regresará como tipo de objeto Lista.
En Python3:
input (): es exactamente igual que raw_input () en Python2.
eval (input ()) : es exactamente igual que input () en Python2.
En Python 3, raw_input()
no existe, lo cual ya fue mencionado por Sven.
En Python 2, la función input()
evalúa tu entrada.
Ejemplo:
name = input("what is your name ?")
what is your name ?harsha
Traceback (most recent call last):
File "<pyshell#0>", line 1, in <module>
name = input("what is your name ?")
File "<string>", line 1, in <module>
NameError: name ''harsha'' is not defined
En el ejemplo anterior, Python 2.x está tratando de evaluar harsha como una variable en lugar de una cadena. Para evitar eso, podemos usar comillas dobles en nuestra entrada como "harsha":
>>> name = input("what is your name?")
what is your name?"harsha"
>>> print(name)
harsha
Datos crudos()
La función raw_input () `no evalúa, solo leerá lo que ingreses.
Ejemplo:
name = raw_input("what is your name ?")
what is your name ?harsha
>>> name
''harsha''
Ejemplo:
name = eval(raw_input("what is your name?"))
what is your name?harsha
Traceback (most recent call last):
File "<pyshell#11>", line 1, in <module>
name = eval(raw_input("what is your name?"))
File "<string>", line 1, in <module>
NameError: name ''harsha'' is not defined
En el ejemplo anterior, solo estaba tratando de evaluar la entrada del usuario con la función eval
.
En Python 2 , raw_input()
devuelve una cadena, y input()
intenta ejecutar la entrada como una expresión de Python.
Ya que obtener una cadena era casi siempre lo que querías, Python 3 hace eso con input()
. Como dice Sven, si alguna vez quieres el comportamiento anterior, eval(input())
funciona.
La diferencia es que raw_input()
no existe en Python 3.x, mientras que input()
sí. En realidad, el antiguo raw_input()
ha sido renombrado a input()
, y el input()
antiguo input()
se ha ido, pero se puede simular fácilmente usando eval(input())
. (Recuerde que eval()
es malo, por lo tanto, si es posible, trate de utilizar formas más seguras de analizar su entrada).
Me gustaría agregar un poco más de detalle a la explicación proporcionada por todos los usuarios de python 2 . raw_input()
, que, a estas alturas, ya sabe que evalúa los datos que el usuario ingresa como una cadena. Esto significa que Python ni siquiera intenta volver a entender los datos ingresados. Todo lo que se tendrá en cuenta es que los datos introducidos serán una cadena, sea o no una cadena real o int o algo.
Mientras que input()
por otro lado, trata de entender los datos ingresados por el usuario. Por lo tanto, la entrada como helloworld
incluso mostraría el error como " helloworld is undefined
".
En conclusión, para python 2 , para ingresar una cadena también necesita ingresarla como '' helloworld
'', que es la estructura común que se usa en python para usar cadenas.