Was ist der Unterschied zwischen raw_input()
und input()
in Python 3?
python
python-3.x
input
pkumar
quelle
quelle
input
zuraw_input
und Namen Fehler ignorieren.Antworten:
Der Unterschied besteht darin, dass
raw_input()
dies in Python 3.x nicht vorhandeninput()
ist. Eigentlich wurde das Alteraw_input()
in umbenanntinput()
und das Alteinput()
ist weg, kann aber einfach mit simuliert werdeneval(input())
. (Denkeneval()
Sie daran, dass dies böse ist. Versuchen Sie, Ihre Eingaben nach Möglichkeit sicherer zu analysieren.)quelle
raw_input
...?" - "Der Unterschied ist, dass es keine gibtraw_input
." ... Ein drastischer Unterschied, würde ich sagen!eval
(undexec
) generell vermieden werden sollten, da sie ein Sicherheitsrisiko darstellen können. Für Details siehe Eval ist wirklich gefährlich von SO-Veteran Ned Batchelder. Und dieser Rat gilt natürlich auch für das alte Python 2input
.eval()
undexec()
, aber Sie müssen zuerst verstehen, warum Sie sie nicht verwenden sollten,eval()
bevor Sie sich für die Verwendung entscheiden.In Python 2 ,
raw_input()
gibt eine Zeichenfolge, undinput()
versucht , den Eingang als Python Ausdruck auszuführen.Da das Erhalten eines Strings fast immer das war, was Sie wollten, macht Python 3 das mit
input()
. Wie Sven sagt, wenn Sie jemals das alte Verhalten wollen,eval(input())
funktioniert.quelle
raw_input()
.Python 2:
raw_input()
Nimmt genau das, was der Benutzer eingegeben hat, und gibt es als Zeichenfolge zurück.input()
nimmt zuerst dasraw_input()
und führt dann auch eineval()
drauf durch.Der Hauptunterschied besteht darin,
input()
dass eine syntaktisch korrekte Python-Anweisung erwartet wird, woraw_input()
dies nicht der Fall ist.Python 3:
raw_input()
wurde umbenannt in gibtinput()
jetztinput()
die genaue Zeichenfolge zurück.input()
wurde entfernt.Wenn Sie die alte verwenden möchten
input()
, dh eine Benutzereingabe als Python-Anweisung auswerten müssen, müssen Sie dies manuell mithilfe von tuneval(input())
.quelle
In Python 3
raw_input()
existiert nicht, was bereits von Sven erwähnt wurde.In Python 2
input()
wertet die Funktion Ihre Eingabe aus.Beispiel:
Im obigen Beispiel versucht Python 2.x, Harsha als Variable und nicht als Zeichenfolge auszuwerten. Um dies zu vermeiden, können wir um unsere Eingabe doppelte Anführungszeichen wie "harsha" verwenden:
raw_input ()
Die Funktion raw_input () `wertet nicht aus, sondern liest nur, was Sie eingeben.
Beispiel:
Beispiel:
Im obigen Beispiel habe ich nur versucht, die Benutzereingaben mit der
eval
Funktion auszuwerten .quelle
Ich möchte der Erklärung, die jeder für die Python 2-Benutzer gibt, etwas mehr Details hinzufügen .
raw_input()
Inzwischen wissen Sie, dass alle vom Benutzer eingegebenen Daten als Zeichenfolge ausgewertet werden. Dies bedeutet, dass Python nicht einmal versucht, die eingegebenen Daten erneut zu verstehen. Es wird lediglich berücksichtigt, dass die eingegebenen Daten Zeichenfolgen sind, unabhängig davon, ob es sich um eine tatsächliche Zeichenfolge oder int oder etwas anderes handelt.Während
input()
andererseits versucht, die vom Benutzer eingegebenen Daten zu verstehen. Die Eingabe wiehelloworld
würde den Fehler sogar als 'helloworld is undefined
' anzeigen.Um in Python 2 auch eine Zeichenfolge einzugeben, müssen Sie diese wie '
helloworld
' eingeben. Dies ist die in Python übliche Struktur zur Verwendung von Zeichenfolgen.quelle
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 diese hinzu, um mit dem Skript zu beginnen:
quelle