Почему Python считает, что логическое значение является целым числом?

Python рассматривает логическое значение как целое число. Зачем?

>>> boolean = True
>>> isinstance(boolean, int)
True

Отмените условие и спросите Python, является ли целое число логическим (очевидно, нет), вы получите это:

>>> integer = 123
>>> isinstance(integer, bool)
False

1 ответ

Решение

Это находится в документации: https://docs.python.org/3/library/stdtypes.html?highlight=boolean

Существует три различных числовых типа: целые числа, числа с плавающей запятой и комплексные числа. Кроме того, логические значения являются подтипом целых чисел.

True а также False численно равны 1 а также 0 в Python соответственно.

Поскольку bool является подклассом int, как было установлено выше, встроенная функция isinstance возвращает true, как описано в https://docs.python.org/3/library/functions.html.

isinstance(объект, classinfo)

Вернуть true, если аргумент объекта является экземпляром аргумента classinfo или его (прямого, косвенного или виртуального) подкласса. Если объект не является объектом данного типа, функция всегда возвращает false. Если classinfo является кортежем объектов типа (или рекурсивно, другими такими кортежами), верните true, если объект является экземпляром любого из типов. Если classinfo не является типом или кортежем типов и такими кортежами, возникает исключение TypeError.

Другие вопросы по тегам