В стандартном соглашении используется if foo is None
, а не if foo == None
, чтобы проверить, действительно ли значение None
.
Если вы хотите определить, является ли значение точно True
(а не только истинным значением), есть ли причина использовать if foo == True
, а не if foo is True
? Различается ли это между реализациями, такими как CPython (2.x и 3.x), Jython, PyPy и т.д.?
Пример: say True
используется как одноэлементное значение, которое вы хотите отличить от значения 'bar'
или любого другого значения true-like:
if foo is True: # vs foo == True
...
elif foo == 'bar':
...
Есть ли случай, когда использование if foo is True
даст разные результаты от if foo == True
?
ПРИМЕЧАНИЕ. Я знаю Python booleans - если x:, vs, если x == True, vs, если x - True. Тем не менее, он определяет только, следует ли использовать if foo
, if foo == True
или if foo is True
, чтобы определить, имеет ли значение foo
значение true.
ОБНОВЛЕНИЕ: Согласно PEP 285 § Спецификация:
Значения False и True будут одиночными, например None.