Как мне добиться эффекта оператора === в Python?
Как мне добиться эффекта от ===
оператор в Python?
Например, я не хочу False == 0
быть True
,
6 ответов
Если вы хотите проверить, что значение и тип совпадают, используйте:
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:
'=' — это простой оператор присваивания, который можно использовать для присвоения значений переменным вне блока (выражение, подобное оператору if else), а также внутри выражения .
let a = 3; let b = 5; if (a = b){ console.log(a, b);}
Приведенный выше код будет работать нормально, и значению обеих переменных будет присвоено значение 5.
'==' Этот оператор просто проверяет значение операнда и возвращает логический результат. ПРИМЕЧАНИЕ. По умолчанию он преобразует операнд к тому же типу, а затем сравнивает их. например, при сравнении «3» и 3 он преобразует оба операнда в один и тот же тип (число или строку), затем сравнивает значение. Результат для 3 == «3» будет ИСТИНА.
'===' Этот оператор проверяет значение, а также тип операнда. и возвращает логический результат. Итак, для сравнения '3' === 3 результат будет FALSE.
Теперь рассмотрим Python:
'=' Этот оператор просто используется для присвоения отдельным значениям переменным. Не внутри выражения (в отличие от JS)
a = 3 b = 2 if a = b: print('True')
Этот код не будет работать и выдавать сообщение «SyntaxError: неверный синтаксис».
ОТВЕТ, КОТОРЫЙ ВЫ СПРОСИЛИ ===>
- '==' этот оператор в Python будет работать аналогично оператору '===' в JS, он будет сравнивать значения и тип операнда, а затем возвращать логический результат.
ПРИМЕЧАНИЕ. Выше я хотел бы также упомянуть, что из-за различий в типах данных в Python и JS или любых других языках программирования операторы имеют тенденцию отличаться друг от друга.
Например,
В Python целые числа и числа с плавающей запятой (десятичные числа) — это два отдельных типа данных, а в JS они называются просто числами. Следовательно, функционирование операторов будет различаться.
- Начиная с 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)))