Heim > Backend-Entwicklung > Python-Tutorial > Warum wirft mein Python-Code nach wiederholter Typumwandlung einen „TypeError: ‚str'-Objekt ist nicht aufrufbar' aus?

Warum wirft mein Python-Code nach wiederholter Typumwandlung einen „TypeError: ‚str'-Objekt ist nicht aufrufbar' aus?

Susan Sarandon
Freigeben: 2024-12-15 20:19:28
Original
247 Leute haben es durchsucht

Why Does My Python Code Throw a `TypeError: 'str' object is not callable` After Repeated Typecasting?

Typecasting Enigma: Den Second Time TypeError erforschen

Beim Umgang mit Python-Code ist es nicht ungewöhnlich, auf einen verwirrenden TypeError zu stoßen, der sich scheinbar selbst widerspricht . Ein solches Rätsel entsteht, wenn Code wie str = str(...) mehrmals versucht wird.

Das rätselhafte Problem

Bedenken Sie den folgenden Codeausschnitt:

def example(parameter):
    global str
    str = str(parameter)
    print(str)

example(1)
example(2)
Nach dem Login kopieren

Beim Ausführen dieses Codes funktioniert der erste Aufruf der Beispielfunktion einwandfrei. Der zweite Aufruf löst jedoch einen Fehler aus:

Traceback (most recent call last):
  File "test.py", line 7, in <module>
    example(2)
  File "test.py", line 3, in example
    str = str(parameter)
TypeError: 'str' object is not callable
Nach dem Login kopieren

Die Erklärung

Dieses verwirrende Verhalten ist auf die Verwendung der globalen Anweisung zurückzuführen. Ohne auf die Komplexität globaler und lokaler Variablen einzugehen, ist der entscheidende Punkt hier, dass der Code die integrierte str-Funktion ändert.

Wenn Sie globale str ausführen, erklären Sie effektiv, dass Sie die verwenden möchten globale Version von str anstelle der lokalen. Anschließend definieren Sie jedoch die globale Zeichenfolge als Zeichenfolge neu. Dies ist problematisch, da str ein integraler Bestandteil der Python-Sprache ist und nicht geändert werden sollte.

Die Lösung

Um dieses Problem zu beheben, vermeiden Sie einfach eine Neudefinition der globalen str-Variablen. Verwenden Sie stattdessen einen anderen Namen für die lokale Variable und entfernen Sie die globale Anweisung. Der korrigierte Code würde so aussehen:

def example(parameter):
    new_str = str(parameter)
    print(new_str)
Nach dem Login kopieren

Zusätzliche Hinweise

Es ist wichtig, sich daran zu erinnern, dass, wenn Sie Code wie diesen bei der Python REPL verwendet haben, die Zuweisung Der Zugriff auf die globale Zeichenfolge bleibt bestehen, bis Sie weitere Maßnahmen ergreifen. Sie können entweder den Interpreter neu starten oder den globalen str mit del str löschen.

Das Verständnis des Zusammenspiels zwischen globalen Variablen und lokalen Variablen ist wichtig, um solche Fehler in Zukunft zu verhindern. Indem Sie die Änderung integrierter Python-Funktionen sorgfältig vermeiden, können Sie sicherstellen, dass Ihr Code reibungslos und konsistent läuft.

Das obige ist der detaillierte Inhalt vonWarum wirft mein Python-Code nach wiederholter Typumwandlung einen „TypeError: ‚str'-Objekt ist nicht aufrufbar' aus?. 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