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

Что такое Истина и Ложь? Чем он отличается от True и False?

Я только что узнал, что в питоне есть значения Truthy и Falsy, которые отличаются от обычных True и False?

Может кто-нибудь, пожалуйста, подробно объясните, какие истинные и фальшивые ценности есть?

Где я должен их использовать?

В чем разница между значениями правды и True и значениями фальши и False?

4b9b3361

Ответ 1

Как описано в комментариях, это просто относится к значениям, которые оцениваются как True или False.

Например, чтобы увидеть, не является ли список пустым, вместо проверки:

if len(my_list) != 0:
   print "Not empty!"

Вы можете просто сделать это:

if my_list:
   print "Not empty!"

Это связано с тем, что некоторые значения, такие как пустые списки, считаются False при оценке для логического значения. Непустые списки имеют значение True.

Аналогично для целого числа 0 пустая строка "" и т.д. Для False и ненулевых целых чисел, непустых строк и т.д. Для True.

Идея таких терминов, как "правдивость" и "ложь", просто ссылается на те значения, которые считаются истинными в случаях, подобных описанным выше, и те, которые считаются ложными.

Например, пустой список ([]) считается "ложным", а непустой список (например, [1]) считается "правдивым".

См. Также этот раздел документации.

Ответ 2

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

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

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

Тестирование Истинного Значения

Ответ 3

Python определяет истинность, применяя bool() к типу, который возвращает True или False который используется в выражении типа if или while.

Вот пример для пользовательского класса Vector2d и его экземпляра, возвращающего значение False когда величина (длина вектора) равна 0, в противном случае - True.

import math
class Vector2d(object):
    def __init__(self, x, y):
        self.x = float(x)
        self.y = float(y)

    def __abs__(self):
        return math.hypot(self.x, self.y)

    def __bool__(self):
        return bool(abs(self))

a = Vector2d(0,0)
print(bool(a))        #False
b = Vector2d(10,0)    
print(bool(b))        #True

Примечание. Если бы мы не определили __bool__ он всегда вернул бы True, поскольку экземпляры определенного пользователем класса по умолчанию считаются верными.

Пример из книги: "Свободное владение Python, понятное, лаконичное и эффективное программирование"

Ответ 4

Значения Truthy относятся к объектам, используемым в логическом контексте, а не столько к логическому значению, которое возвращает true или false. Возьмем их в качестве примера:

>>> bool([])
False
>>> bool([1])
True
>>> bool('')
False
>>> bool('hello')
True