Новое Распределяем каналы MAX по категориям и территориям. Читать новость
Загружаем изображение…
Загружаем изображение…

Почему True связан с 1?



В ранних версиях Python отдельного типа bool не было. Результат проверки «истина или ложь» обычно представлялся целыми числами: 1 означала истину, 0 — ложь.
Позже в языке появились специальные значения True и False и отдельный тип bool. Но старое поведение уже использовалось в программах, поэтому совместимость сохранили: bool сделали подклассом int.

Поэтому:

print(isinstance(True, bool)) # True
print(isinstance(True, int)) # True

print(int(True)) # 1
print(int(False)) # 0

True при этом не становится обычным числом — его тип всё равно bool. Но в числовом контексте он ведёт себя как 1, а False — как 0.

Отсюда уже понятнее и такое сравнение:

print(True == 1) # True
print(1 == 1.0) # True
print(True == 1.0) # True


1 и 1.0 относятся к разным типам — int и float, — но представляют одно и то же числовое значение: единицу. А True, благодаря устройству bool, тоже сравнивается с этой единицей как равное значение.


Подписывайтесь, если хотите лучше разбираться в Python.
Питоша | Python
Просмотры: 64
Открыть в MAX Сообщить о неточности

Сообщить о неточности

Опишите, что нужно исправить. Если есть источник, добавьте ссылку.

Вы покидаете datool.ru

Ссылка ведёт на внешний сайт. datool.ru не отвечает за его содержимое — проверьте адрес, прежде чем вводить пароли или платёжные данные.

Переход через 10 с

Перейти