Почему 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.

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