Есть ли в Python оператор строгого сравнения наподобие ===?
📁 python, работа
Просто обычное сравнение через == работает не так, как нужно:
>>> 0 == FalseTrue Если суть вопроса в сравнении значений и типов, то можно сделать так:
def strict_eq(obj1, obj2): if type(obj1) != type(obj2): retu False retu obj1 == obj2In [4]: strict_eq(0, False)Out[4]: FalsePS можно пойти ещё дальше и для числовых типов сравнивать числа до определенной точности, чтобы избежать известных проблем с плавающей точкой:
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 == obj2In [10]: strict_eq(0.1 + 0.2, 0.3)Out[10]: True Войдите чтобы оставить ответ