Heim > Backend-Entwicklung > Python-Tutorial > Warum verursacht die Python-Funktion „input()' „NameError' und wie kann ich das vermeiden?

Warum verursacht die Python-Funktion „input()' „NameError' und wie kann ich das vermeiden?

Mary-Kate Olsen
Freigeben: 2024-12-31 22:56:11
Original
686 Leute haben es durchsucht

Why Does Python's `input()` Function Cause

Input()-Fehler: Behandlung von Namensfehlern in Python

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.

Grundlegendes zu Input() in Python 2.7

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

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

Input() in Python 3.x

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.

Sicherheitsimplikationen von Input() in Python 2.7

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

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!

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