Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/357.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 为什么';int';对象不可调用使用sum()函数时出错?_Python_Sum_Python 2.7_Callable - Fatal编程技术网

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解释器并尝试一下。现在可以了。谢谢你的帮助!