2012-05-21 5 views
6

Можно создать дубликат:
why does python's list.append evaluate to false?Python - Почему ext() и append() return None (void)?

На мой взгляд, я думаю, list1.extend(list2) и list1.append(num) должен вернуть мутантный список, а не None (Недействительными). Также как и побочный эффект деструктивного изменения исходного списка.

+4

Я лично думаю, что это также плохо разработанный API, и мутации основанные на API, являются плохими. Однако этот вопрос не подходит для StackOverflow, поскольку это не вопрос; это мнение, которое, скорее всего, будет заниматься только дебатами. Если мы не рассмотрим заголовок «Почему extend() и append() возвращают None (void)?» как часть вопроса, в каком случае это нелегко ответить, если вы не спросите самих дев, что происходит в их сознании. – ninjagecko

+3

Также, если вы желаете этого поведения, вы можете сделать 'yourList + [1]' или 'yourList + [1,2,3]'. К сожалению, императивные стили программирования (например, python) «обычно» просто отбрасывают возвращаемые значения, если они будут использоваться в строках сами по себе. – ninjagecko

+0

@ninjagecko - задан вопрос: «Почему ext() и append() возвращают None (void)?' См. Этот ответ в частности: (http://stackoverflow.com/a/1682601/21945) – mhawke

ответ

2

Я считаю, что целью было продвижение читаемого кода и уменьшение ошибок. Это решение было принято очень давно, но вы, вероятно, можете найти больше, просматривая архивы списков рассылки python/python-dev.

Python3 бы была возможность изменить это поведение, но, как вы видите, что остается, так не считается дизайн ошибка командой разработчиков