Python 为什么';int';对象不可调用使用sum()函数时出错?
我试图弄清楚为什么在一个范围内使用求和函数时会出现错误 代码如下:Python 为什么';int';对象不可调用使用sum()函数时出错?,python,sum,python-2.7,callable,Python,Sum,Python 2.7,Callable,我试图弄清楚为什么在一个范围内使用求和函数时会出现错误 代码如下: 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 <
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
第8行,总计2=总和(数据3)
TypeError:“int”对象不可调用
我找到了这个错误的解释:
line 8, in <module> total2 = sum(data3)
TypeError: 'int' object is not callable
在Python中,“可调用”通常是一个函数。该消息表示您将一个数字(一个>“int”)视为一个函数(一个“可调用”),因此Python不知道该做什么,所以它>停止
我还读到sum()可以用于列表,所以我想知道这里出了什么问题
我只是在一个空闲模块中尝试了一下,效果很好。但是,它在python解释器中不起作用。有什么想法吗?这意味着在代码中的其他地方,您有如下内容:
sum = 0
它用int(不可调用)来隐藏内置sum(可调用)。您可能将“sum”函数重新定义为整数数据类型。所以它正确地告诉你,整数不是你能通过的范围 要修复此问题,请重新启动解释器
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
builtin进行阴影处理,则可以得到所看到的错误
>>> 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
>>总和=0
>>>总计=总和(数据3)#计算数据3列表元素的总和
回溯(最近一次呼叫最后一次):
文件“”,第1行,在
TypeError:“int”对象不可调用
另外,请注意,
sum
将在集合上正常工作
无需在解释器中将其转换为列表
,它很容易重新启动并修复此类问题。如果不想重新启动解释器,有另一种方法可以修复它:
Python 2.6.6 (r266:84292, Dec 27 2010, 00:02:40)
[GCC 4.4.5] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> l = [1,2,3]
>>> sum(l)
6
>>> sum = 0 # oops! shadowed a builtin!
>>> sum(l)
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: 'int' object is not callable
>>> import sys
>>> sum = sys.modules['__builtin__'].sum # -- fixing sum
>>> sum(l)
6
Python2.6.6(r266:8429220010年12月27日00:02:40)
[GCC 4.4.5]关于linux2
有关详细信息,请键入“帮助”、“版权”、“信用证”或“许可证”。
>>>l=[1,2,3]
>>>总数(l)
6.
>>>求和=0#哎呀!跟踪一个内置的!
>>>总数(l)
回溯(最近一次呼叫最后一次):
文件“”,第1行,在
TypeError:“int”对象不可调用
>>>导入系统
>>>sum=系统模块[''内置].sum--固定和
>>>总数(l)
6.
如果您碰巧为任何其他内置项分配了值,例如
dict
或list
,这也很方便。这对我来说非常适合。。。在调用函数之前,是否命名了一个变量sum
。我正在使用IDE。如您所述,在空闲状态下工作。IDE正在运行Python2.7。这太奇怪了,你说“IEP不起作用”。什么是IEP?Python的交互式编辑器。你真的不需要将你的设置转换回列表sum()
将处理任何数字序列。显示的代码是整个程序。我希望事情就这么简单。还有其他想法吗?@mattste重新启动python解释器并尝试一下。现在可以了。谢谢你的帮助!