python报错:TypeError: 'str' object is not callable
這個問題遇到好多次了,這次記錄一下,
問題重現
代碼僅保留最重要的:
# summaries 是一個集合
# 求和并打印
result = 0
for str in summaries:
result += int(str)
print("result= " + str(result))
1
2
3
4
5
6
1
2
3
4
5
6
報錯:
Traceback (most recent call last):
? File "sum_log.py", line 22,
? ? main(None)
? File "sum_log.py", line 18,
? ? print("sum = " + str(sum))
TypeError: 'str' object is not callable
1
2
3
4
5
6
1
2
3
4
5
6
原因分析
錯誤提示說str是一個不可調用的對象,但是str確實是Python的一個內置函數啊?
而且以前用的時候都沒有出現這個問題這是為什么呢?
原來是因為代碼中我自己定義了一個變量叫str然后這個變量把Python內置的str函數給覆蓋了(可以注意下下for循環的局部變量)
解決辦法
辦法二:將自己定義的局部變量改為其他的名稱如:將str改為sss
result = 0
for sss in summaries:
?? ?result += int(sss)
print("result = " + str(sss))
1
2
3
4
1
2
3
4
辦法一:使用變量自帶的轉字符串的方法:result.__str__(),不過這種方法不推薦,后面其他地方用到str()方法怎么辦呢?
# 求和并打印
result = 0
for str in summaries:
?? ?result += int(str)
print("result = " + str.__str__())
1
2
3
4
5
1
2
3
4
5
最好的辦法
結合兩種方式,不要將變量定義成str,并使用變量自身的__str__()方法。
# 求和并打印
result = 0
for sss in summaries:
?? ?result += int(sss)
print("result = " + sss.__str__())
1
2
3
4
5
1
2
3
4
5
最后的最后
在Java中我們都喜歡定義str,sum這樣臨時變量,但是在Python中是內置的函數,會產生歧義
————————————————
版權聲明:本文為CSDN博主「荒野雄兵」的原創文章,遵循 CC 4.0 BY-SA 版權協議,轉載請附上原文出處鏈接及本聲明。
原文鏈接:https://blog.csdn.net/daerzei/article/details/80018230
總結
以上是生活随笔為你收集整理的python报错:TypeError: 'str' object is not callable的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 吴晟哈尔滨工程大学(吴晟)
- 下一篇: 六脉神剑(说一说六脉神剑的简介)