2012-05-21 14 views
6

Mögliche Duplizieren:
why does python's list.append evaluate to false?Python - Warum liefert extend() und append() return None (void)?

Meiner Meinung nach, ich denke list1.extend(list2) und list1.append(num) sollen die mutierte Liste anstatt None (void) zurückzukehren. Neben dem Nebeneffekt, die ursprüngliche Liste destruktiv zu mutieren.

+4

Ich persönlich denke, es ist auch eine schlecht entworfene API und Mutation -basierte APIs sind schlecht. Diese Frage ist jedoch für StackOverflow nicht geeignet, da es sich nicht um eine Frage handelt. es ist eine Meinung, die wahrscheinlich nur Debatte erbitten wird. Es sei denn, wir betrachten den Titel "Warum gibt es extend() und append() gibt None (void) zurück?" Als Teil der Frage, welcher Fall es ist, ist es nicht leicht zu verantworten, wenn man nicht die Entwickler selbst fragt, was ihnen durch den Kopf ging. – ninjagecko

+3

Auch wenn Sie dieses Verhalten wünschen, können Sie 'yourList + [1]' oder 'yourList + [1,2,3]' tun. Leider würden imperative Programmierstile (wie Python) "normalerweise" nur die Rückgabewerte wegwerfen, wenn sie auf Zeilen alleine verwendet würden. – ninjagecko

+0

@ninjagecko - eine Frage wird gestellt, diese Frage lautet: Warum gibt extend() und append() return None (void)? 'Siehe diese Antwort im Einzelnen: (http://stackoverflow.com/a/1682601/21945) – mhawke

Antwort

2

Ich glaube, dass die Absicht war, lesbaren Code zu fördern und Fehler zu reduzieren. Diese Entscheidung wurde vor sehr langer Zeit getroffen, aber Sie können wahrscheinlich mehr finden, wenn Sie sich die Archive der Python/Python-Dev-Mailinglisten anschauen.

Python3 wäre die Gelegenheit gewesen, dieses Verhalten zu ändern, aber wie Sie sehen, es bleibt, so ist keine Design-Fehler durch das Entwicklungsteam als

Verwandte Themen