2013-02-05 29 views
1

當我撥打列表時,我得到'list' object is not callable。參見下面的命令行會話。「列表」對象在「小數」列表上不可調用

>>> 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

'>>>類型(總和)' –

+5

@Muquaddim - 這是你的問題。你已經通過在某處創建了一個具有相同名稱的列表來影響內置'sum'功能...... – mgilson

回答

4

我懷疑你的代碼中的類型列表中有一個名爲sum的局部變量,因此你會得到這個錯誤。在Python中,你可以重新綁定任何內建函數。您仍然可以使用__builtin__模塊調用內置函數sum

>>> 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進行整合。

相關問題