Beim Versuch, ein einfaches Skript auszuführen, stoßen Benutzer möglicherweise auf den folgenden Fehler:
NameError: name '...' is not defined
Dieser Fehler tritt auf, wenn Python 2.7 mit der Funktion input() verwendet wird, die Benutzereingaben als Python-Ausdruck auswertet. Wenn eine Zeichenfolgeneingabe erwartet wird, kann diese Auswertung zu Verwirrung führen.
Python 2.7 bietet zwei Optionen für Benutzereingaben:
In Python 2.7 gilt Folgendes:
input = eval(raw_input)
Daher wird bei Verwendung von input("Geben Sie Ihren Namen ein:") die Eingabezeichenfolge, z. B. "dude", als Variable ausgewertet Name. Wenn im Skript keine Variable mit dem Namen „dude“ vorhanden ist, wird der Fehler ausgegeben.
Die Auswertungsfunktion von input() hat Auswirkungen auf die Sicherheit. Wenn beispielsweise das Betriebssystemmodul importiert wird und der Benutzer „os.remove(“/etc/hosts“) eingibt, wird dieser Python-Ausdruck ausgeführt und könnte möglicherweise dem System schaden.
In Python 3.x gibt es nur eine input()-Funktion, die im Wesentlichen die raw_input() von Python 2.7 nachahmt. Dadurch entfällt der Auswertungsaspekt und der Eingabeprozess wird vereinfacht.
Um den NameError in Python 2.7 beim Lesen von String-Eingaben zu beheben, empfiehlt es sich, die Funktion raw_input anstelle von input zu verwenden. Dadurch wird sichergestellt, dass die Eingabe als Zeichenfolge behandelt und nicht als Python-Ausdruck ausgewertet wird. Wenn eine weitere Verarbeitung oder Konvertierung erforderlich ist, können entsprechende Funktionen zur Verarbeitung der String-Eingabe eingesetzt werden.
Das obige ist der detaillierte Inhalt vonWarum verursacht „input()' in Python 2.7 einen „NameError' und wie kann ich das beheben?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!