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

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

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

6 ответов

Решение

Пытаться variable is False, False is 0 возвращается False,

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

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

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


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

Следуя определению 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

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

Ответ в контексте JS и Python (3.11.4):

В JS:

  1. '=' — это простой оператор присваивания, который можно использовать для присвоения значений переменным вне блока (выражение, подобное оператору if else), а также внутри выражения .

            let a = 3;
    let b = 5;
    
    if (a = b){
    console.log(a, b);}
    

Приведенный выше код будет работать нормально, и значению обеих переменных будет присвоено значение 5.

  1. '==' Этот оператор просто проверяет значение операнда и возвращает логический результат. ПРИМЕЧАНИЕ. По умолчанию он преобразует операнд к тому же типу, а затем сравнивает их. например, при сравнении «3» и 3 он преобразует оба операнда в один и тот же тип (число или строку), затем сравнивает значение. Результат для 3 == «3» будет ИСТИНА.

  2. '===' Этот оператор проверяет значение, а также тип операнда. и возвращает логический результат. Итак, для сравнения '3' === 3 результат будет FALSE.

Теперь рассмотрим Python:

  1. '=' Этот оператор просто используется для присвоения отдельным значениям переменным. Не внутри выражения (в отличие от JS)

            a = 3 
    b = 2
    
    if a = b: 
    print('True')
    

Этот код не будет работать и выдавать сообщение «SyntaxError: неверный синтаксис».


ОТВЕТ, КОТОРЫЙ ВЫ СПРОСИЛИ ===>

  1. '==' этот оператор в Python будет работать аналогично оператору '===' в JS, он будет сравнивать значения и тип операнда, а затем возвращать логический результат.

ПРИМЕЧАНИЕ. Выше я хотел бы также упомянуть, что из-за различий в типах данных в Python и JS или любых других языках программирования операторы имеют тенденцию отличаться друг от друга.

Например,

В Python целые числа и числа с плавающей запятой (десятичные числа) — это два отдельных типа данных, а в JS они называются просто числами. Следовательно, функционирование операторов будет различаться.


  1. Начиная с Python(3.8), действует новый оператор «:=», и этот оператор можно использовать для присвоения значений внутри выражений.

`

Фон

В ответах и ​​комментариях много дезинформации. , и (оператор строгого равенства) различны. В Python, как и во многих других языках программирования, проверка строгого равенства является частой и важной практикой.

оператор

isпредназначен для проверки идентичности объекта.

      >>> a = 3.4
>>> b = 3.4
>>> a is b
False

оператор

==предназначен для проверки значений при включении приведения типов.

      >>> 3.0 == 3
True

Здесь он выполнил неявное преобразование типов.

оператор

Оператор строгого равенства (реализованный как===в некоторых основных языках), в приведенном выше примере вернет false. Он проверяет как типы, так и значения.

На сегодняшний день Python не реализует ни одного оператора для сравнения строк на равенство.

Один из распространенных способов реализации - ответ Джереми. Это решение работает нормально, если типы и значения совпадают. Однако он не распространяется на производные типы.

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

Если вы хотите распространить его на производные типы, вам следует сделать следующее.

      x == y and (isinstance(x, type(y)) or isinstance(y, type(x)))
Другие вопросы по тегам