Есть ли в Python оператор строгого сравнения наподобие ===?

Просто обычное сравнение через == работает не так как нужно:

>>> 0 == False
True

Ответы (5 шт):

Автор решения: DGDays

Что именно вас смущает? В Python True = 1, а False = 0. Если вам надо сравнить именно слова True и False, тогда просто возьмите их в качестве строк например 0 == "False"

→ Ссылка
Автор решения: MaxU

Если суть вопроса в сравнении значений и типов, то можно сделать так:

def strict_eq(obj1, obj2):
    if type(obj1) != type(obj2):
        return False
    return obj1 == obj2

In [4]: strict_eq(0, False)
Out[4]: False

PS можно пойти ещё дальше и для числовых типов сравнивать числа до определенной точности, чтобы избежать известных проблем с плавающей точкой:

In [5]: 0.1 + 0.2 == 0.3
Out[5]: False

функция строгого сравнения с определенной точностью:

from numbers import Number

def strict_eq(obj1, obj2, epsilon=1e-7):
    if type(obj1) != type(obj2):
        return False
    if isinstance(obj1, Number):
        return abs(obj1 - obj2) < epsilon
    return obj1 == obj2

In [10]: strict_eq(0.1 + 0.2, 0.3)
Out[10]: True
→ Ссылка
Автор решения: MarianD

Для многих случаев возможно применить сравнение idов:

id(0) == id(False)
False

Это не совсем соответствует оператору === (JavaScript), но может быть полезным.

→ Ссылка
Автор решения: Simeon Kosnitsky
print(0 == False)
# True
print(0 is False)
# False
→ Ссылка
Автор решения: u111
def is_equal(a, b):
    return type(a) == type(b) and a == b
→ Ссылка