Heim >Backend-Entwicklung >Python-Tutorial >Warum verursacht „input()' in Python 2.7 einen „NameError' und wie kann ich das beheben?

Warum verursacht „input()' in Python 2.7 einen „NameError' und wie kann ich das beheben?

Mary-Kate Olsen
Mary-Kate OlsenOriginal
2024-12-30 22:38:18515Durchsuche

Why Does `input()` Cause a `NameError` in Python 2.7, and How Can I Fix It?

input() Error: Resolving NameError 'Name' Is Not Defined

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-Spezifität

Python 2.7 bietet zwei Optionen für Benutzereingaben:

  • Eingabe : Wertet die Eingabe als Python aus Ausdruck.
  • raw_input: Liest die Eingabe als String ohne Auswertung.

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.

Sicherheitsbedenken bei input() in Python 2.7

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.

Python 3.x und Darüber hinaus

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.

Lösungen und Empfehlungen

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!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn