2009-02-14 13 views
20

Pourquoi python ont 2.5.2 le comportement suivantPython étendre avec un bug liste vide?

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

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

$ python --version 
Python 2.5.2 

Je suppose que je ne comprends pas quelque chose, mais intuitivement je pense que [2] .extend ([]) devrait donner [2]

+0

Qui a besoin d'intuition quand il y a l'interprète? Juste 'print [2] .extend ([])'. – tzot

Répondre

35

Extend est une méthode de liste, qui la modifie mais ne renvoie pas self (renvoyant None à la place). Si vous avez besoin de la valeur modifiée comme valeur d'expression, utilisez +, comme dans [2]+[].

9

Exactement.

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

Ils le font exprès pour que vous vous rappellerez que la fonction Extend est en train de modifier réellement la liste en place. Pareil avec sort(). Il renvoie toujours None.