0

リストに対して'list' object is not callable呼び出すと取得します。以下のコマンド ライン セッションを参照してください。sumDecimal

>>> 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のWebサイトに記載されているように機能していることがわかります。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 に答える