当我针对'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
答案 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集成。