Heim >Backend-Entwicklung >Python-Tutorial >Warum verursacht die Neudefinition von „str' einen „TypeError' in nachfolgenden Python-Funktionsaufrufen?
Neudefinition von str verursacht TypeError in der zweiten Ausführung
Der bereitgestellte Python-Code weist ein eigenartiges Verhalten auf, bei dem der Aufruf von example(1) ohne Probleme ausgeführt wird , aber example(2) löst einen TypeError aus. Dieses rätselhafte Phänomen ist auf die problematische Codesequenz zurückzuführen:
global str str = str(parameter)
Innerhalb dieses Blocks weist der Code der globalen str-Variablen den Wert str(parameter) zu. Diese Neudefinition überschreibt im Wesentlichen den integrierten Python-Namen des String-Typs und führt zu Konflikten mit nachfolgenden Vorgängen.
Das Problem
Die integrierte str()-Funktion ist Wird verwendet, um Objekte in Strings umzuwandeln. Durch die Neudefinition von str mit str(parameter) ersetzt der Code effektiv die ursprüngliche Funktion durch eine benutzerdefinierte Variable, die den konvertierten Wert des Parameters enthält.
Als Ergebnis im zweiten Aufruf von example(2), wenn der Code versucht, str erneut zu verwenden, ist es keine Funktion mehr, sondern ein String-Objekt. Folglich löst der Interpreter einen TypeError aus, da String-Objekte nicht wie Funktionen aufgerufen werden können.
Die Lösung
Um dieses Problem zu beheben, ändern Sie den integrierten String-Namen nicht . Weisen Sie stattdessen der lokalen Variablen, die den konvertierten Wert speichert, einen anderen Namen zu. Entfernen Sie außerdem die globale Anweisung, die unnötig ist, da die lokale Variable keine vorhandene globale Variable ändert.
Hier ist der korrigierte Code:
def example(parameter): s = str(parameter) # Use a different name for the local variable print(s) # Use the newly created local variable example(1) example(2)
Das obige ist der detaillierte Inhalt vonWarum verursacht die Neudefinition von „str' einen „TypeError' in nachfolgenden Python-Funktionsaufrufen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!