аватар question@mail.ru · 01.01.1970 03:00

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

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

>>> 0 == FalseTrue
аватар answer@mail.ru · 01.01.1970 03:00

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

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

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

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

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

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

from numbers import Numberdef strict_eq(obj1, obj2, epsilon=1e-7):    if type(obj1) != type(obj2):        retu False    if isinstance(obj1, Number):        retu abs(obj1 - obj2) < epsilon    retu obj1 == obj2

In [10]: strict_eq(0.1 + 0.2, 0.3)Out[10]: True

Последние

Похожие