Was ist der Unterschied zwischen raw_input()
und input()
in python3.x?
Der Unterschied ist, dass raw_input()
in Python 3.x nicht vorhanden ist, während input()
dies tut. Eigentlich wurde die alte raw_input()
in input()
umbenannt, und die alte input()
ist nicht mehr vorhanden, kann aber mit eval(input())
leicht simuliert werden. (Denken Sie daran, dass eval()
böse ist. Versuchen Sie, Ihre Eingabe auf sicherere Weise zu analysieren, wenn möglich.)
In Python 2 gibt raw_input()
eine Zeichenfolge zurück und input()
versucht, die Eingabe als Python-Ausdruck auszuführen.
Da die Suche nach einem String fast immer das war, was Sie wollten, macht Python 3 dies mit input()
. Wie Sven sagt, wenn Sie jemals das alte Verhalten wollen, funktioniert eval(input())
.
raw_input()
übernimmt genau das, was der Benutzer eingegeben hat, und gibt es als Zeichenfolge zurück.
input()
nimmt zuerst die raw_input()
und führt dann auch eine eval()
aus.
Der Hauptunterschied besteht darin, dass input()
eine syntaktisch korrekte Python-Anweisung erwartet, während raw_input()
dies nicht tut.
raw_input()
wurde in input()
umbenannt, daher gibt input()
die genaue Zeichenfolge zurück.input()
wurde entfernt. Wenn Sie die alte input()
verwenden möchten, dh, Sie müssen eine Benutzereingabe als Python-Anweisung auswerten, müssen Sie sie manuell mit eval(input())
ausführen.
In Python 3 existiert raw_input()
nicht, was bereits von Sven erwähnt wurde.
In Python 2 wertet die Funktion input()
Ihre Eingabe aus.
Beispiel:
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
Im obigen Beispiel versucht Python 2.x, Harsha als Variable und nicht als String auszuwerten. Um dies zu vermeiden, können wir doppelte Anführungszeichen wie "harsha" verwenden:
>>> name = input("what is your name?")
what is your name?"harsha"
>>> print(name)
harsha
raw_input ()
Die Funktion raw_input () `wertet nicht aus, sie liest nur, was Sie eingeben.
Beispiel:
name = raw_input("what is your name ?")
what is your name ?harsha
>>> name
'harsha'
Beispiel:
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
Im obigen Beispiel habe ich nur versucht, die Benutzereingabe mit der Funktion eval
auszuwerten.
Ich möchte der Erklärung, die jeder Benutzer der python 2-Benutzer zur Verfügung stellt, etwas mehr Details hinzufügen. raw_input()
, von dem Sie inzwischen wissen, dass alle Daten, die der Benutzer als Zeichenfolge eingibt, ausgewertet werden. Das bedeutet, dass Python die eingegebenen Daten nicht noch einmal zu verstehen versucht. Es wird lediglich berücksichtigt, dass die eingegebenen Daten eine Zeichenfolge sind, unabhängig davon, ob es sich um eine tatsächliche Zeichenfolge oder um ein int oder etwas anderes handelt.
Während input()
versucht, die vom Benutzer eingegebenen Daten zu verstehen. Die Eingabe wie helloworld
würde den Fehler sogar als 'helloworld is undefined
' anzeigen.
Für python 2 müssen Sie zum Eingeben einer Zeichenfolge auch die Zeichenfolge 'helloworld
' eingeben. Dies ist die in Python häufig verwendete Struktur zur Verwendung von Zeichenfolgen.
Wenn Sie sicherstellen möchten, dass Ihr Code mit Python2 und Python3 ausgeführt wird, verwenden Sie die Funktion input () in Ihrem Skript und fügen Sie Folgendes zum Beginn Ihres Skripts hinzu:
from sys import version_info
if version_info.major == 3:
pass
Elif version_info.major == 2:
try:
input = raw_input
except NameError:
pass
else:
print ("Unknown python version - input function not safe")