在練習Python代碼的時候遇到了一個問題,導致一個數字轉字符串的語句無法執行,代碼為:
print(list(map(str, [1, 2, 3])))
錯誤提示為 'str' object is not callable。
反復檢查幾遍之后,發現語句沒有錯誤。在控制台輸入相同語句,發現可以順利執行輸出正確結果。因此猜測是前面的代碼影響的這一句的執行。但是檢查兩邊之后沒有發現錯誤。
查找相關博客之后(https://blog.csdn.net/lifelegendc/article/details/55051374)發現是因為前面的代碼將str已經定義為一個普通變量,因此這里調用內置函數str()是無效的,會仍然認為是一個變量,自然就會提示是 not callable。也就是說 str() 是自帶的內置函數,不可以在希望使用字符串轉換函數的同時自定義一個 str 變量。
我的代碼中,在一開始一個for循環中希望打印一個list中的所有字符串,變量名字取成了 str:
classmate = ['one', 'two', 'three']
for str in classmate:
print(s + ', ')
print('\n')
str() 是一個builtin 函數,在這里將一個普通變量定義為str,編譯器在之后的解釋執行過程中,會一直把str作為一個普通變量處理,自然在希望調用str()的時候會出問題。
把這里的 str 改成 s 等其他變量,就能解決問題。