¿Cuál es la diferencia entre raw_input()
y input()
en Python 3?
python
python-3.x
input
pkumar
fuente
fuente
input
araw_input
e ignorar los errores de identificación.Respuestas:
La diferencia es que
raw_input()
no existe en Python 3.x, mientras queinput()
sí. En realidad, el viejoraw_input()
ha sido renombradoinput()
y el viejoinput()
se ha ido, pero se puede simular fácilmente usandoeval(input())
. (Recuerde que esoeval()
es malo. Intente utilizar formas más seguras de analizar su entrada si es posible).fuente
raw_input
...?" - "La diferencia es que no hayraw_input
". ... ¡Una diferencia bastante drástica, diría yo!eval
(yexec
) generalmente deben evitarse porque pueden ser un riesgo para la seguridad. Para más detalles, consulte Eval realmente es peligroso por el veterano de SO Ned Batchelder. Y, por supuesto, ese consejo también se aplica al antiguo Python 2input
.eval()
yexec()
, pero primero debe comprender por qué no debe usarloeval()
antes de decidir usarlo.En Python 2 ,
raw_input()
devuelve una cadena einput()
intenta ejecutar la entrada como una expresión de Python.Dado que obtener una cadena era casi siempre lo que quería, Python 3 lo hace con
input()
. Como dice Sven, si alguna vez quieres el viejo comportamiento,eval(input())
funciona.fuente
raw_input()
.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 uneval()
sobre él también.La principal diferencia es que
input()
espera una declaración de Python sintácticamente correcta donderaw_input()
no lo hace.Python 3:
raw_input()
fue renombrado ainput()
así que ahorainput()
devuelve la cadena exacta.input()
fue eliminado.Si desea usar el antiguo
input()
, lo que significa que necesita evaluar una entrada del usuario como una declaración de Python, debe hacerlo manualmente usandoeval(input())
.fuente
En Python 3,
raw_input()
no existe lo que ya fue mencionado por Sven.En Python 2, la
input()
función evalúa su entrada.Ejemplo:
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 alrededor de nuestra entrada como "harsha":
Datos crudos()
La función raw_input () `no evalúa, solo leerá lo que ingrese.
Ejemplo:
Ejemplo:
En el ejemplo anterior, solo estaba tratando de evaluar la entrada del usuario con la
eval
función.fuente
Me gustaría agregar un poco más de detalle a la explicación proporcionada por todos para los usuarios de Python 2 .
raw_input()
, que, por ahora, sabes que evalúa los datos que el usuario ingresa como una cadena. Esto significa que python no intenta ni siquiera entender los datos ingresados nuevamente. Todo lo que considerará es que los datos ingresados serán una cadena, ya sea que se trate de una cadena real o int o algo así.Mientras que
input()
por otro lado intenta comprender los datos ingresados por el usuario. Entonces la entrada comohelloworld
incluso mostraría el error como 'helloworld is undefined
'.En conclusión, para python 2 , para ingresar una cadena también debe ingresarla como '
helloworld
', que es la estructura común utilizada en python para usar cadenas.fuente
Si desea asegurarse de que su código se está ejecutando con python2 y python3, use la función input () en su script y agregue esto para comenzar su script:
fuente