2009-02-14 46 views
20

爲什麼蟒蛇2.5.2有下列行爲Python擴展爲空列表錯誤?

>>>[2].extend([]) == [2] 
False 

>>> [2].extend([]) == None 
True 

$ python --version 
Python 2.5.2 

我認爲我不理解這裏的東西,但我直覺會認爲[2] .extend([])應該產生[2]

+0

有翻譯的人需要直覺嗎?只需`print [2] .extend([])`。 – tzot 2009-02-14 23:20:55

回答

35

擴展是列表的一種方法,它修改它,但不返回self(改爲返回None)。如果需要將修改後的值作爲表達式值,請使用+,如[2]+[]中所示。

9

沒錯。

>>> x = [2] 
>>> x.extend([]) # Nothing is printed because the return value is None 
>>> x == [2] 
True 
>>> x 
[2] 

他們這樣做的目的是讓你記住擴展函數實際上是在原地修改列表。與sort()相同。它總是返回None。