Почему Python оценивает строки / числа как True в операторах if myNumber == True возвращает False?
Следующее напечатает 'ok'
:
if 5:
print('ok')
Тем не менее, когда я делаю:
print(5 == True)
Выход False
,
То же самое происходит со строками. Зачем?
2 ответа
Решение
Здесь вы тестируете разные вещи.
if
просто проверяет, если bool
выражения (см. также "Проверка истинности значения") True
нет, если идентичность равна True
,
Так что же на самом деле проверено if
является:
>>> bool(5) == True
True
True имеет значение 1. Если вы установите True = 5
(только в Python 2) равенство становится Истиной. Оператор 'if' подобен проверке, не является ли сторож 0 или None, поэтому каждое число, отличное от 0, можно ввести в первый блок. На самом деле False имеет значение 0.