Возможный дубликат:
Является ли False == 0 и True == 1 в Python частью реализации или гарантируется ли это языком?
Краткая расшифровка с моей интерактивной консоли:
Python 2.7.2 (default, Jun 29 2011, 11:10:00)
[GCC 4.6.1] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> True
True
>>> 0 == True
False
>>> 1 == True
True
>>> 2 == True
False
Почему это так?
Изменить: Для сравнения рассмотрим оператор is
.
>>> 0 is False
False
>>> 1 is True
False
>>> 0 is 0
True
>>> True is True
True
Это имеет большой смысл, потому что хотя 1
и True
означают то же самое, что и условие оператора if
, они действительно не то же самое.
Изменить еще раз: Более забавные последствия 1 == True
:
>>> d = {}
>>> d[True] = "hello"
>>> d[1]
"hello"