2009-02-14 17 views
20

Perché Python 2.5.2 ha il seguente comportamentoPython si estende con un bug di lista vuota?

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

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

$ python --version 
Python 2.5.2 

Presumo non ci sto capendo qualcosa qui, ma intuitivamente mi piacerebbe pensare che [2] .extend ([]) dovrebbe produrre [2]

+0

Chi ha bisogno di intuito quando c'è l'interprete? Solo 'print [2] .extend ([])'. – tzot

risposta

35

Extend è un metodo di elenco che lo modifica ma non restituisce self (restituendo invece None). Se è necessario il valore modificato come valore dell'espressione, utilizzare +, come in [2]+[].

9

Esattamente.

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

lo fanno di proposito in modo che vi ricorderete che la funzione di estendere è effettivamente modificare l'elenco sul posto. Lo stesso con sort(). Restituisce sempre None.