0

'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

4

1 回答 1

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 轻松集成。

于 2013-02-05T15:23:51.300 回答