Задать вопрос
@bigburn
Делаю неживое живым

Есть ли примеры, когда мат. операции с True и False реально полезны?

В python есть такая фича — були (True и False) можно складывать, вычитать, в общем производить над ними мат. операции.

Есть ли реальная польза от этой фичи, когда, например, это:
— повышает производительность
— делает код более лаконичным (не теряя скорости)
и тд?

Помечаю вопрос как сложный, т.к. пока не нашел положительного ответа, а тем временем эта фича присутствует как во 2-ом, так и в 3-ем python'е
  • Вопрос задан
  • 406 просмотров
Подписаться 1 Простой 2 комментария
Решения вопроса 1
sergey-gornostaev
@sergey-gornostaev Куратор тега Python
Седой и строгий
Математические операции над ними можно проводить только потому, что булевые значения в Python - это подтипы целых чисел. Практической пользы я от этого никогда не видел и сильно сомневаюсь, что она есть.
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 2
LazyTalent
@LazyTalent
Data Engineer, Freelancer
Это вопрос не эффективности, а истории. Изначально в Python не было булевых типов, а при операциях сравнения возвращались 0 или 1 (так же как и в C). 8 марта 2002 года был выпущен PEP 285, который добавил эти типы в язык:

This PEP proposes the introduction of a new built-in type, bool, with two constants, False and True. The bool type would be a straightforward subtype (in C) of the int type, and the values False and True would behave like 0 and 1 in most respects (for example, False==0 and True==1 would be true) except repr() and str(). All built-in operations that conceptually return a Boolean result will be changed to return False or True instead of 0 or 1; for example, comparisons, the "not" operator, and predicates like isinstance().

https://www.python.org/dev/peps/pep-0285/
Ответ написан
Комментировать
@GameDev_Easy
Сегодня я пишу на змеях...
Здравствуйте!
И да и нет... При современных процессорах, польза от этого метода почти пропала, а вот раньше, когда процессоры были мягко говоря, не очень складывать двоичные числа было быстрее, чем десятичные (в смысле, что операция 1 + 2 (десятичное) и 1 + 10 (двоичное) сильно отличались по времени выполнения.)
True и False - на самом деле, нолики и единички. Но если вы складываете числа символов по 100, то, действительно, (хоть и на пару миллисекунд) будет быстрее конвертировать их в двоичный формат - массив true и false и применить к ним X-OR
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

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