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)
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
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)
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!