Heim >Backend-Entwicklung >Python-Tutorial >Warum führt die Neudefinition der integrierten Funktion „str' zu einem TypeError bei der String-Konvertierung?
Neudefinition von Built-Ins führt zu TypeError bei der String-Konvertierung
Dies erklärt, warum die Codezuweisung zu str innerhalb einer Funktion bei nachfolgenden Aufrufen einen TypeError auslöst zu dieser Funktion, im Gegensatz zu ersten Versuchen. Das folgende Code-Snippet veranschaulicht das Problem:
def example(parameter): global str # Declares str as a global variable str = str(parameter) # Redefines str as a string print(str) example(1) # First call: successful string conversion example(2) # Second call: raises a TypeError
Ursache und Lösung
Die globale Anweisung im Snippet definiert im Wesentlichen str, einen integrierten Typ, neu Darstellung von Zeichenfolgen. Das Zuweisen eines neuen Werts zu str() überschreibt seine Standardfunktionalität als Funktion zum Konvertieren von Objekten in Zeichenfolgen.
Um dieses Problem zu beheben, verwenden Sie einen anderen Namen für die lokale Variable innerhalb der Funktion und entfernen Sie die globale Anweisung. Zum Beispiel:
def example(parameter): local_str = str(parameter) # Local variable with a different name print(local_str) example(1) # First call: successful string conversion example(2) # Second call: successful string conversion
Interaktive Python-Shell-Auswirkungen
Wenn dieses Problem in einer interaktiven Shell auftritt, bleibt die Zuweisung zum globalen str() bestehen, sofern nicht ausdrücklich darauf eingegangen wird. Eine Möglichkeit, dieses Problem zu beheben, besteht darin, den Interpreter neu zu starten. Alternativ können Sie die Zuweisung manuell entfernen, indem Sie Folgendes verwenden:
del str
Bedenken Sie, dass str standardmäßig keine definierte globale Variable ist; Es befindet sich normalerweise im Modul builtins, das beim Start von Python importiert wird.
Das obige ist der detaillierte Inhalt vonWarum führt die Neudefinition der integrierten Funktion „str' zu einem TypeError bei der String-Konvertierung?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!