Подтвердить что ты не робот

Почему list.append оценивается как false?

Есть ли причина, когда list.append оценивается как false? Или это просто соглашение о возвращении 0 при успешном запуске?

>>> u = []
>>> not u.append(6)
True
4b9b3361

Ответ 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
>>>