2012-05-21 13 views
6

Duplicar posibles:
why does python's list.append evaluate to false?Python: ¿Por qué extends() y append() devuelven None (void)?

En mi opinión, creo que list1.extend(list2)list1.append(num) y debe devolver la lista mutado en lugar de None (void). Además de tener el efecto secundario de mutar destructivamente la lista original.

+4

yo personalmente creo que también es una API malo-diseñado, y la mutación basadas en API son malas. Sin embargo, esta pregunta no es apropiada para StackOverflow, ya que no es una pregunta; es una opinión que probablemente solo solicite debate. A menos que consideremos el título "¿Por qué extends() y append() devuelven None (void)?" como parte de la pregunta, en cuyo caso no es fácil responder, a menos que le pregunte a los desarrolladores qué pasaba por sus mentes. – ninjagecko

+3

También si desea este comportamiento, puede hacer 'yourList + [1]' o 'yourList + [1,2,3]'. Tristemente, los estilos de programación imperativa (como Python) "normalmente" simplemente descartarían los valores de retorno si fueran usados ​​en líneas por sí mismos. – ninjagecko

+0

@ninjagecko - se está haciendo una pregunta, esa pregunta es '¿Por qué extends() y append() devuelven None (void)?' Ver esta respuesta en particular: (http://stackoverflow.com/a/1682601/21945) – mhawke

Respuesta

2

Creo que la intención era promover código legible y reducir errores. Esta decisión se tomó hace mucho tiempo, pero probablemente pueda encontrar más mirando los archivos de las listas de correo python/python-dev.

python3 habría sido la oportunidad de cambiar este comportamiento, pero a medida que verlo sigue siendo, por lo que no se considera un error de diseño por el equipo de desarrollo

Cuestiones relacionadas