“列表”对象在“十进制”列表中不可调用

时间:2013-02-05 15:17:11

标签: python list python-2.7 fatal-error

当我针对'list' object is not callable列表致电sum时,我得到Decimal。请参阅下面的命令行会话。

>>> sys.version_info
sys.version_info(major=2, minor=7, micro=3, releaselevel='final', serial=0)
>>> d = map(Decimal, u'0.97 + .03'.split('+'))
>>> d
[Decimal('0.97'), Decimal('0.03')]
>>> sum(d)
Traceback (most recent call last):
  File "<console>", line 1, in <module>
TypeError: 'list' object is not callable

我正在使用python 2.7.3。此处sum(d)的预期输出为1.00

我看到它的工作方式如Python网站所述。 http://docs.python.org/2/library/decimal.html#quick-start-tutorial

1 个答案:

答案 0 :(得分:4)

我怀疑你的代码类型列表中有一个名为sum的局部变量,这就是你得到这个错误的原因。在python中,您可以重新绑定任何内置函数。您仍然可以使用sum模块调用内置函数__builtin__

>>> sum = [] # override builtin sum function
>>> from decimal import Decimal
>>> d = map(Decimal, ['0.97', '0.03'])
>>> sum(d)
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: 'list' object is not callable
>>> __builtins__.sum(d)
Decimal('1.00')

但是我建议不要在内置函数或类型之后命名局部变量。捕获这些错误的一个好方法是在代码上运行pylint Python静态代码检查器。某些编辑器或IDE允许轻松与pylint集成。