問題描述
我試圖弄清楚為什么在范圍上使用 sum 函數時會出錯.
I'm trying to figure out why I'm getting an error when using the sum function on a range.
代碼如下:
data1 = range(0, 1000, 3)
data2 = range(0, 1000, 5)
data3 = list(set(data1 + data2)) # makes new list without duplicates
total = sum(data3) # calculate sum of data3 list's elements
print total
這是錯誤:
line 8, in <module> total2 = sum(data3)
TypeError: 'int' object is not callable
我找到了這個錯誤的解釋:
I found this explanation for the error:
在 Python 中,可調用"通常是一個函數.該消息意味著您將數字(一個>int")視為一個函數(一個可調用"),所以Python不知道該做什么,所以它>停止.
In Python a "callable" is usually a function. The message means you are treating a number (an >"int") as if it were a function (a "callable"), so Python doesn't know what to do, so it >stops.
我還讀到 sum() 能夠用于列表,所以我想知道這里出了什么問題?
I've also read that sum() is capable of being used on lists, so I'm wondering what is going wrong here?
我剛剛在 IDLE 模塊中嘗試過,效果很好.但是,它在 python 解釋器中不起作用.有什么想法嗎?
I just tried it in an IDLE module and it worked fine. However, it doesn't work in the python interpreter. Any ideas on how that can be?
推薦答案
您可能將sum"函數重新定義為整數數據類型.所以它正確地告訴你整數不是你可以傳遞范圍的東西.
You probably redefined your "sum" function to be an integer data type. So it is rightly telling you that an integer is not something you can pass a range.
要解決此問題,請重新啟動您的解釋器.
To fix this, restart your interpreter.
Python 2.7.3 (default, Apr 20 2012, 22:44:07)
[GCC 4.6.3] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> data1 = range(0, 1000, 3)
>>> data2 = range(0, 1000, 5)
>>> data3 = list(set(data1 + data2)) # makes new list without duplicates
>>> total = sum(data3) # calculate sum of data3 list's elements
>>> print total
233168
如果你隱藏 sum
內置,你會得到你看到的錯誤
If you shadow the sum
builtin, you can get the error you are seeing
>>> sum = 0
>>> total = sum(data3) # calculate sum of data3 list's elements
Traceback (most recent call last):
? File "<stdin>", line 1, in <module>
TypeError: 'int' object is not callable
另外,請注意 sum
將在 set
上正常工作,無需將其轉換為 list
Also, note that sum
will work fine on the set
there is no need to convert it to a list
這篇關于為什么在使用 sum() 函數時會出現 'int' object is not callable 錯誤?的文章就介紹到這了,希望我們推薦的答案對大家有所幫助,也希望大家多多支持html5模板網!