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
Freigeben: 2024-12-30 22:38:18
Original
514 Leute haben es durchsucht

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
Nach dem Login kopieren

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)
Nach dem Login kopieren

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!

Quelle:php.cn
Erklärung dieser Website
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
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage