2012-05-21 15 views
6

Powiel możliwe:
why does python's list.append evaluate to false?Python - Dlaczego funkcja extend() i append() zwraca None (void)?

W mojej opinii, myślę list1.extend(list2) i list1.append(num) powinien zwrócić zmutowany listy zamiast None (void). Jak również efekt uboczny destruktywnego mutowania oryginalnej listy.

+4

ja osobiście uważam, że jest też źle zaprojektowane API, a mutacja oparte na API są złe. Jednak to pytanie nie jest odpowiednie dla StackOverflow, ponieważ nie jest to kwestia; jest to opinia, która prawdopodobnie tylko zabiega o debatę. O ile nie rozważymy tytułu "Dlaczego metody extend() i append() zwracają None (void)?" jako część pytania, w którym przypadku nie jest łatwo odpowiedzieć, chyba że sami prosi się o to, co dzieje się w ich umysłach. – ninjagecko

+3

Również jeśli chcesz tego zachowania, możesz zrobić "yourList + [1]" lub "yourList + [1,2,3]". Niestety imperatywne style programowania (takie jak python) "normalnie" po prostu odrzucają wartości zwracane, jeśli zostały użyte na liniach samodzielnie. – ninjagecko

+0

@ninjagecko - pytanie jest zadawane, pytanie to brzmi "Dlaczego funkcja extend() i append() zwraca None (void)?" Zobacz tę odpowiedź w szczególności: (http://stackoverflow.com/a/1682601/21945) – mhawke

Odpowiedz

2

Uważam, że celem było promowanie czytelnego kodu i ograniczenie błędów. Ta decyzja została podjęta bardzo dawno temu, ale prawdopodobnie można znaleźć więcej, patrząc na archiwa list mailingowych python/python-dev.

Python3 byłaby możliwość, aby zmienić to zachowanie, ale jak widać to pozostaje, więc nie jest uważane za błąd design by deweloperami

Powiązane problemy