What is Truthy and Falsy? How is it different from True and False?
Что такое True и Falsy? Чем это отличается от True и False?
Я только что узнал, что в python есть значения truthy и falsy, которые отличаются от обычных True и False.
Кто-нибудь, пожалуйста, может подробно объяснить, что такое значения truthy и falsy? Где я должен их использовать? В чем разница между true и True значениями и falsy и False values?
Мы используем "truthy" и "falsy", чтобы отличать от bool значений True и False. "Правдивое" значение будет удовлетворять проверке, выполняемой операторами if or while. Как объясняется в документации, все значения считаются "правдивыми", за исключением следующих, которые являются "ложными":
obj.__len__() возвращает 0, учитывая, что obj.__bool__ значение не определено
Ответ 2
Как описано в комментариях, это просто относится к значениям, которые оцениваются как True или False.
Например, чтобы увидеть, не является ли список пустым, вместо проверки следующим образом:
iflen(my_list) != 0: print("Not empty!")
Вы можете просто сделать это:
if my_list: print("Not empty!")
Это связано с тем, что некоторые значения, такие как пустые списки, считаются False при вычислении логического значения. Непустые списки являются True.
Аналогично для целого числа 0, пустой строки "" и так далее, для False , и ненулевых целых чисел, непустых строк и так далее, для True.
Идея таких терминов, как "true" и "falsy", просто относится к тем значениям, которые считаются True в случаях, подобных описанным выше, и тем, которые считаются False .
Например, пустой список ([]) считается "ложным", а непустой список (например, [1]) считается "правдивым".
Python определяет правдивость, применяясь bool() к типу, который возвращает True or False который используется в выражении типа if or while.
Вот пример для пользовательского класса, Vector2dи его экземпляр возвращает значение False, когда величина (длина вектора) равна 0, в противном случае True.
a = Vector2d(0,0) print(bool(a)) #False b = Vector2d(10,0) print(bool(b)) #True
Примечание: Если бы мы не определяли __bool__, он всегда возвращал бы True, поскольку экземпляры пользовательского класса по умолчанию считаются true.
Пример из книги: "Свободное владение Python, четкое, лаконичное и эффективное программирование"
Ответ 4
Истинностные значения относятся к объектам, используемым в логическом контексте, а не к логическому значению, которое возвращает true или false .Возьмем их в качестве примера.: