Вопрос-Ответ

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?


Смотри также:

* Как "и" и "или" действуют с некулевыми значениями?

* Логическая идентичность == True vs . Истинно

* Логическое значение объектов в Python

Переведено автоматически
Ответ 1

Мы используем "truthy" и "falsy", чтобы отличать от bool значений True и False. "Правдивое" значение будет удовлетворять проверке, выполняемой операторами if or while. Как объясняется в документации, все значения считаются "правдивыми", за исключением следующих, которые являются "ложными":


  • None

  • False

  • Числа, численно равные нулю, включая:

  • Пустые последовательности и коллекции, включая:

    • [] - пустой list

    • {} - пустой dict

    • () - пустой tuple

    • set() - пустой set

    • '' - пустой str

    • b'' - пустой bytes

    • bytearray(b'') - пустой bytearray

    • memoryview(b'') - пустой memoryview

    • пустое значение range, например range(0)



  • объекты, для которых

    • obj.__bool__() ВОЗВРАТ False

    • obj.__len__() возвращает 0, учитывая, что obj.__bool__ значение не определено



Ответ 2

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

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

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

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

if my_list:
print("Not empty!")

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

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

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

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

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

Ответ 3

Python определяет правдивость, применяясь bool() к типу, который возвращает True or False который используется в выражении типа if or 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, поскольку экземпляры пользовательского класса по умолчанию считаются true.

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

Ответ 4

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

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