Почему bool ([None]) возвращает True [duplicate]

Используя Xamarin и .NET Portable 4.5, это был единственный формат, который я получил после того, как попробовал все остальные ответы здесь:

timespan.ToString("hh':'mm':'ss");

По существу я помещаю : в одинарные кавычки, чтобы убежать их.

35
задан Ben Hare 26 May 2017 в 20:52
поделиться

1 ответ

Все значения считаются «правдивыми», за исключением следующих: «falsy»:

  • None
  • False
  • 0
  • 0.0
  • 0j
  • [] - пустая list
  • {} - пустая dict
  • () - пустая tuple
  • '' - пустая str
  • b'' - empty bytes
  • set() - пустые объекты set
  • , для которых obj.__bool__() возвращает False obj.__len__(), возвращают 0

Значение «правдивое» будет удовлетворять проверке, выполняемой операторами if или while. Мы используем «правдивые» и «ложные», чтобы отличать значения bool True и False.

53
ответ дан Patrick Haugh 15 August 2018 в 18:21
поделиться
  • 1
    Вы не должны использовать комментарии для таких вопросов, как это, но для быстрого ответа: Кажется, ls - это список. Этот оператор if проверяет, является ли он пустым. Если он пуст, возвращается result. – B. Eckles 11 October 2016 в 18:14
  • 2
    или это означает, что если my_list верен? – user 11 October 2016 в 18:21
  • 3
    Я предлагаю попробовать эти вещи в оболочке Python и увидеть для себя. ;) if my_list означает «если my_list не пуст», а if not my_list означает «если мой список пуст». – B. Eckles 11 October 2016 в 18:22
  • 4
    хорошо, у меня последнее замешательство, я видел много мест вроде if a:, что означает этот тип условий? это означает, что если a истинно или означает, что a является ложным? или это означает, что если a является правдивым или если a является ложным? – user 11 October 2016 в 18:24
  • 5
    Спасибо, но также исправьте эту строку For instance, to see if a list is empty, instead of checking like this:, она должна быть if a list is not empty – user 11 October 2016 в 19:11
  • 6
    Отличный список, спасибо. Полностью академический вопрос, но знаете ли вы, что такое заказ на исполнение? Думал, что вы можете создать объект, где bool возвращает True, а len возвращает 0 (или наоборот). – Hayden Crocker 30 October 2017 в 11:44
  • 7
    @HaydenCrocker Сначала он ищет __bool__, затем __len__. Если ни один из них не определен, все экземпляры считаются «истинными». Это обсуждается в документах для метода object.__bool__ – Patrick Haugh 30 October 2017 в 17:36
Другие вопросы по тегам:

Похожие вопросы: