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