Heim >Backend-Entwicklung >Python-Tutorial >Warum wirft meine Python-Eingabefunktion einen „NameError: Name ‚...' ist nicht definiert' aus?

Warum wirft meine Python-Eingabefunktion einen „NameError: Name ‚...' ist nicht definiert' aus?

Patricia Arquette
Patricia ArquetteOriginal
2025-01-01 05:35:10263Durchsuche

Why Does My Python Input Function Throw a

Eingabefunktionsfehler beheben: „NameError: name '...“ Nicht definiert

Die Eingabefunktion in Python, insbesondere in Versionen vor 3.x stellt eine besondere Herausforderung beim Umgang mit Benutzereingaben dar. Der Fehler „NameError: Name '...'' ist nicht definiert“ rührt von der Bewertungsnatur der Eingabe her.

In Python 2.7 akzeptiert die Eingabe nicht nur Benutzereingaben, sondern wertet diese auch als aus Python-Ausdruck. Das heißt, wenn Sie einen Variablennamen wie „dude“ eingeben, wird Input versuchen, ihn als gebundene Variable in Ihrem Programm zu interpretieren. Wenn keine solche Variable vorhanden ist, tritt der Fehler auf.

Die Fallstricke der Eingabe von Python 2.7 vermeiden

Um dieses potenzielle Sicherheitsrisiko zu vermeiden, sollten Sie einen Wechsel zu raw_input in Betracht ziehen. der Vorgänger der Eingabe in Python 3.x. raw_input liest einfach Benutzereingaben, ohne sie auszuführen.

In Python 3.x ersetzt input effektiv raw_input und bietet die gleiche Funktionalität. In der Python 3.x-Dokumentation wird jedoch darauf hingewiesen, dass Sie eval(input()) verwenden können, wenn Sie das alte Eingabeverhalten benötigen.

Die Unterscheidung verstehen

Zu Um den Unterschied zwischen Eingabe und Raw_Input zu veranschaulichen, betrachten wir den folgenden Python 2.7-Code:

dude = "thefourtheye"
input_variable = input("Enter your name: ")

Wenn Sie eingeben „dude“ als Eingabe, input_variable wird der Wert „thefourtheye“ zugewiesen, da dude eine definierte Variable im Programm ist.

Vergleichen Sie dies mit dem folgenden Code:

input_variable = raw_input("Enter your name: ")

In diesem Fall , input_variable wird die Zeichenfolge „dude“ selbst zugewiesen, ohne dass eine Auswertung erfolgt.

Sicherheit Überlegungen

Die Auswertungsfähigkeit von Eingaben in Python 2.7 wirft Sicherheitsbedenken auf. Wenn beispielsweise das Betriebssystemmodul importiert wurde und der Benutzer „os.remove('/etc/hosts')“ eingibt, wird es als Funktionsaufruf ausgeführt. Um diese Risiken zu mindern, sollten Sie immer die Verwendung von raw_input in Betracht ziehen, um sicherzustellen, dass Benutzereingaben nicht versehentlich als Code ausgewertet werden.

Das obige ist der detaillierte Inhalt vonWarum wirft meine Python-Eingabefunktion einen „NameError: Name ‚...' ist nicht definiert' aus?. 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