¿Por qué list.append se evalúa como falso en un contexto booleano? [duplicar]

Resuelto diciu asked hace 14 años • 7 respuestas

¿Hay alguna razón para que list.appendla evaluación sea falsa? ¿O es simplemente la convención C de devolver 0 cuando tiene éxito lo que entra en juego?

>>> u = []
>>> not u.append(6)
True
diciu avatar Nov 06 '09 01:11 diciu
Aceptado

La mayoría de los métodos de Python que mutan un contenedor in situ regresan None: una aplicación del principio de separación entre comandos y consultas . (Python siempre es razonablemente pragmático acerca de las cosas, por lo que algunos mutadores devuelven un valor utilizable cuando, de lo contrario, obtenerlo sería costoso o un desastre; el popmétodo es un buen ejemplo de este pragmatismo, pero esos son definitivamente la excepción, no la regla. , y no hay razón para hacer appenduna excepción).

Alex Martelli avatar Nov 05 '2009 18:11 Alex Martelli

Noneevalúa en FalsePython y en Python se supone que una función que no devuelve nada ha devuelto None.

Si escribes:

>> print u.append(6)
None

Tadaam :)

Matthieu M. avatar Nov 05 '2009 18:11 Matthieu M.

porque .appendel método regresa None, por lo tanto not Nonese evalúa como True. Python en caso de error generalmente genera un error:

>>> a = ()
>>> a.append(5)
Traceback (most recent call last):
  File "<pyshell#1>", line 1, in <module>
    a.append(5)
AttributeError: 'tuple' object has no attribute 'append'
SilentGhost avatar Nov 05 '2009 18:11 SilentGhost