2010-03-17 63 views
9
coinCount = [2 for i in range(4)] 
total = sum(coinCount) 

这给了我'廉政' 对象不是可调用

TypeError: 'int' object is not callable 

我不明白为什么,因为

print type(coinCount) 

给我

type <'list'> 

回答

41

您确定使用此标识符sum以前在你的代码中是一个局部变量名,你绑定的最后一个值是int。因此,在该代码片段中,您试图调用intprint sum就在您尝试调用它之前,您会看到,但代码检查可能会更快地显示它。

这种问题是为什么专家Pythonistas反复告诉新手“不要为自己的变量使用内建名称!”即使它显然不是伤害特定的代码片段:这是一个可怕的习惯,错误只是等待发生,如果你使用的标识符,如sumfilelist等,作为自己的变量或函数 - )

+1

经常推荐的替代方法是在标识符上加下划线后缀,否则这些标识符会与保留字和内置标识符相冲突;即'type_'或'sum_'或'from_'(如果你使用介词作为标识符)。 – cdleary 2010-03-17 07:21:17

1

我想补充一下Alex Martelli所说的不要使用sum作为变量名称,但如果你的程序已经太长了,或者你正在闲置,并且你不想重头开始可以做

sum2 = sum 
del sum 

到总和的价值转移到SUM2(如有必要),并删除该变量总和(允许你继续与求和函数工作)