Загружаем изображение…
Загружаем изображение…
Почему 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) # True1 и 1.0 относятся к разным типам — int и float, — но представляют одно и то же числовое значение: единицу. А True, благодаря устройству bool, тоже сравнивается с этой единицей как равное значение.
Подписывайтесь, если хотите лучше разбираться в Python.
Питоша | Python