日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > python >内容正文

python

python报错:TypeError: 'str' object is not callable

發布時間:2024/9/20 python 45 豆豆
生活随笔 收集整理的這篇文章主要介紹了 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的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。