wake-up-neo.net

Was ist der Unterschied zwischen raw_input () und input () in python3.x?

Was ist der Unterschied zwischen raw_input() und input() in python3.x?

321
pkumar

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.)

376
Sven Marnach

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()).

181
Thomas K

Python 2:

  • 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.

Python 3:

  • raw_input() wurde in input() umbenannt, daher gibt input() die genaue Zeichenfolge zurück.
  • Alte 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.

103
screenglow

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.

24
Harsha Vardhan

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. 

7
Rubal

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")
0