Beim Versuch, ein Skript auszuführen, das die Eingabefunktion verwendet, kann der Fehler „NameError: Name“ auftreten. ...‘ ist nicht definiert.“ Dies tritt auf, wenn der Versuch der Eingabefunktion, die Eingabe des Benutzers als Python-Ausdruck auszuwerten, aufgrund des Fehlens eines gültigen Namens oder einer gültigen Variable fehlschlägt.
In Python 2.7 , führt die Eingabefunktion ein eindeutiges Verhalten aus. Es interpretiert die Eingabe des Benutzers als Python-Ausdruck. Wenn das Skript eine Zeichenfolge erwartet, sollte die Eingabe nicht in Anführungszeichen gesetzt werden. Wenn jedoch eine Zeichenfolge erwartet wird, aber in Anführungszeichen eingeschlossen ist, tritt der Fehler aufgrund des Vorhandenseins zusätzlicher Anführungszeichen auf.
Zum Beispiel:
input_variable = input("Enter your name: ") # Expecting a string without quotes print("Your name is " + input_variable) # Error: NameError
Um dies in Python 2.7 zu beheben, Verwenden Sie stattdessen die Funktion raw_input. Diese Funktion liest einfach die Eingabe des Benutzers, ohne sie als Python-Ausdruck zu interpretieren.
input_variable = raw_input("Enter your name: ") # Expecting a string with quotes print("Your name is " + input_variable) # No error
In Python 3.x wurde die Funktion raw_input umbenannt eingeben. Daher verhält es sich ähnlich wie raw_input in Python 2.7: Es liest die Eingabe des Benutzers als Zeichenfolge ohne Interpretation.
Da Eingabe in Python 2.7 wertet Benutzereingaben aus, was Sicherheitsbedenken aufwirft. Wenn ein böswilliger Benutzer einen Befehl eingibt, der nicht ordnungsgemäß bereinigt oder validiert ist, könnte er möglicherweise Schadcode ausführen. Wenn beispielsweise ein Skript das Betriebssystemmodul importiert hat und ein Benutzer Folgendes als Eingabe eingibt:
os.remove("/etc/hosts")
Dies könnte zum Löschen der Datei /etc/hosts führen, was die Wichtigkeit der Verwendung von raw_input stattdessen hervorhebt zum Lesen sensibler Benutzereingaben.
Das obige ist der detaillierte Inhalt vonWarum verursacht die Python-Funktion „input()' „NameError' und wie kann ich das vermeiden?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!