Просто обычное сравнение через == работает не так, как нужно:
>>> 0 == FalseTrue
PythonLib
Питон для всех
question@mail.ru
·
01.01.1970 03:00
Просто обычное сравнение через == работает не так, как нужно:
>>> 0 == FalseTrue
answer@mail.ru
·
01.01.1970 03:00
Если суть вопроса в сравнении значений и типов, то можно сделать так:
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