型別轉換之謎:探索第二次TypeError
在處理Python 程式碼時,遇到看似自相矛盾的令人困惑的TypeError 並不罕見。當多次嘗試像 str = str(...) 這樣的程式碼時,就會出現這樣一個謎。
令人費解的問題
考慮以下程式碼片段:
執行此程式碼後,範例函數的第一次呼叫可以完美運行。然而,第二次呼叫會引發錯誤:
解釋
這種令人困惑的行為源自於全域語句的使用。在不深入研究全域變數和局部變數的複雜性的情況下,這裡的關鍵點是程式碼正在修改內建的 str 函數。
當你執行全域 str 時,你實際上是在聲明你想要使用str 的全域版本而不是本機版本。但是,您隨後將全域 str 重新定義為字串。這是有問題的,因為 str 是 Python 語言不可或缺的一部分,不應更改。
解
要解決此問題,只需避免重新定義全域 str 變數即可。相反,為局部變數使用不同的名稱並刪除全域語句。更正後的程式碼如下所示:
附加註解
請務必記住,如果您在Python REPL 中使用過這樣的程式碼,則分配對全球的影響將持續存在,直到您採取進一步行動。您可以重新啟動解釋器或使用 del str 刪除全域 str。
了解全域變數和局部變數之間的交互作用對於防止將來出現此類錯誤至關重要。小心避免修改內建 Python 函數,您可以確保您的程式碼順利且一致地運行。
以上是為什麼我的 Python 程式碼在重複型別轉換後會拋出'TypeError: 'str' object is not callable”?的詳細內容。更多資訊請關注PHP中文網其他相關文章!