Heim >Backend-Entwicklung >Python-Tutorial >Warum führt die Neudefinition der integrierten Funktion „str' zu einem TypeError bei der String-Konvertierung?

Warum führt die Neudefinition der integrierten Funktion „str' zu einem TypeError bei der String-Konvertierung?

DDD
DDDOriginal
2024-12-15 17:31:14876Durchsuche

Why Does Redefining the Built-in `str` Function Lead to a TypeError in String Conversion?

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!

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