Как мне добиться эффекта оператора === в Python? - PullRequest
12 голосов
/ 17 июля 2011

Как мне добиться эффекта оператора === в Python?

Например, я не хочу, чтобы False == 0 было True.

Ответы [ 4 ]

38 голосов
/ 17 июля 2011

Если вы хотите проверить, что значение и тип совпадают, используйте:

x == y and type(x) == type(y)

В Python таких явных сравнений типов, как это, обычно избегают, но поскольку логические значения являются подклассом целых чисел, это единственный выбор здесь.


x is y сравнивает идентичность - указывают ли два имени на один и тот же объект в памяти. Логические значения Python являются синглетонами, поэтому они будут работать при сравнении, но не будут работать для большинства типов.

17 голосов
/ 17 июля 2011

Попробуйте variable is False.False is 0 возвращает False,

1 голос
/ 19 сентября 2011

В соответствии с определением Mathematica, вот небольшая функция для выполнения этой работы.Сезон delta по вкусу:

def SameQ(pram1, pram2, delta=0.0000001):
    if type(pram1) == type(pram2):
        if pram1 == pram2:
            return True
        try:
            if abs(pram1 - pram2) <= delta:
                return True
        except Exception:
            pass
    return False
1 голос
/ 17 июля 2011

Вы можете использовать оператор is для проверки идентичности объекта. False is 0 вернет False затем.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...