Почему list.append оценивается как false?
Есть ли причина, когда list.append
оценивается как false? Или это просто соглашение о возвращении 0 при успешном запуске?
>>> u = []
>>> not u.append(6)
True
Ответы
Ответ 1
Большинство методов Python, которые мутируют контейнер на месте return None
- приложение принципа Разделение командного запроса. (Python всегда разумно прагматичен в отношении вещей, поэтому несколько мутаторов действительно возвращают полезную ценность, когда получение в противном случае будет дорогостоящим или беспорядочным - метод pop
является хорошим примером этого прагматизма - но это, безусловно, исключение, а не правило, и нет оснований делать исключение append
).
Ответ 2
None
оценивается как False
, а в python предполагается, что функция, которая ничего не возвращает, вернула None
.
Если вы наберете:
>> print u.append(6)
None
Тадаам:)
Ответ 3
Он изменяет список на месте и возвращает None
. None
оценивается как false.
Ответ 4
потому что метод .append
возвращает None
, поэтому not None
оценивается как True
. Обычно ошибка Python вызывает ошибку:
>>> 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'
Ответ 5
На самом деле он возвращает None
>>> print u.append(6)
None
>>> print not None
True
>>>