В стандартном соглашении используется 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.