Какие операторы сравнивают размещение объектов в памяти и записываются как not или is not
- арифметические операторы (arithmetic operators);
- операторы сравнения (comparison или relational operators);
- операторы присваивания (assignment operators);
- логические операторы (logical operators);
- битовые операторы (bitwise operators);
- операторы принадлежности (membership operators);
- операторы тождественности (identity operators).
Далее мы рассмотрим все эти операторы по очереди.
Арифметические операторы в Python
Предположим, переменная a = 10 , а переменная b = 20 .
Операторы сравнения в Python
Предположим, переменная a = 10 , а переменная b = 20 .
Операторы присваивания в Python
Предположим, переменная a = 10 , а переменная b = 20 .
Битовые операторы в Python
Логические операторы в Python
Операторы принадлежности в Python
В дополнение к операторам, которые мы обсудили ранее, в Python так же имеются операторы членства (или принадлежности) в последовательностях, таких как строки, списки или кортежи.
Таких операторов всего два:
Operator | Description | Example |
---|---|---|
in | Считается истиной (true), если находит переменную в заданной последовательности, и ложью (false) в противном случае; | x in y, here in results in a 1 if x is a member of sequence y. |
not in | Считается истиной (true), если не находит переменную в заданной последовательности, и ложью (false) в противном случае. | x not in y, here not in results in a 1 if x is not a member of sequence y. |
Операторы тождественности в Python
Операторы тождественности, или идентичности сравнивают расположение двух объектов в памяти. Таких операторов два:
Operator | Description | Example |
---|---|---|
is | Считается истиной (true), если переменные по обе стороны от оператора указывают на один объект, и ложью (false) в противном случае; | x is y, here is results in 1 if id(x) equals id(y). |
is not | Считается ложью (false), если переменные по обе стороны от оператора указывают на один объект, и истиной (true) в противном случае/ | x is not y, here is not results in 1 if id(x) is not equal to id(y). |
Приоритеты операторов в Python
В Python есть два очень похожих оператора для проверки равенства двух объектов. Эти два оператора is и ==.
Их обычно путаются друг с другом, потому что с простыми типами данных, такими как int и string (с которыми многие люди начинают изучать Python), они, кажется, делают то же самое:
Запуск этого кода приведет к:
Это показывает, что == и is возвращает одинаковое значение (True) в этих случаях. Однако, если вы попытались сделать это с более сложной структурой:
Здесь становится очевидным, что эти операторы не одинаковы.
Разница заключается в том, что is проверяет идентичность (объектов), а == проверяет равенство (значения).
Вот еще один пример, который может прояснить разницу между этими двумя операторами:
Как мы видим, some_list1 по значению равен some_list2 (они оба равны [1]]), но они не идентичны, то есть они не являются одним и тем же объектом, даже если они имеют одинаковые значения.
Тем не менее, some_list1 идентичен some_list3, так как они ссылаются на один и тот же объект в памяти.
Изменяемые и неизменяемые типы данных
Хотя эта часть проблемы теперь может быть понятна (когда мы использовали переменные), может возникнуть другой вопрос:
Почему is и == ведут себя одинаково с простыми значениями типа int и string (например, 5 и «example»), но не ведут себя одинаково со списками (такими как [1])?
В Python есть два типа данных: изменяемые и неизменяемые.
Изменяемые типы данных: list, dictionary, set и пользовательские классы.
Неизменяемые типы данных: int, float, decimal, bool, string, tuple и range.
Подобно многим другим языкам, Python обрабатывает неизменяемые типы данных иначе, чем изменяемые, то есть сохраняет их в памяти только один раз.
Если вы используете строку «example» один раз, каждый раз, когда вы используете «example», это будет точно такой же объект. см. это примечание для дальнейшего разъяснения.
Далее чтобы более подробно рассмотреть эту концепцию изменчивости, используем функцию Python с именем id(), которая выводит уникальный идентификатор для каждого объекта, :
Мы можем видеть, что в первой части примера s вернулся к точно такому же «example» объекту, которому он был назначен в начале, даже если мы изменим значение s за это время.
Однако list не возвращает тот же объект со значением [1], он создает новый объект, даже если он имеет то же значение, что и в первый раз [1].
Если вы запустите приведенный выше код, вы, вероятно, получите разные идентификаторы для объектов, но равенства будут одинаковыми.
Когда использовать is и == ?
Оператор is чаще всего используется, когда мы хотим сравнить объект с None, и обычно рекомендуется ограничить его использование этим конкретным сценарием, если вы действительно (и я действительно имею в виду) не хотите проверить, идентичны ли два объекта.
Кроме того, обычно is быстрее, чем оператор ==, потому что он просто проверяет целочисленное равенство адреса памяти.
Важное примечание: единственная ситуация, когда is работает точно так, как можно было бы ожидать, это с singleton классами или объектами (как например с None). Даже с неизменяемыми объектами бывают ситуации, когда is не работает должным образом.
Например, для больших объектов string, генерируемых некоторой кодовой логикой или большими целыми числами int, is может (и будет) вести себя непредсказуемо. Если вы не пройдете interning (проверку) (т.е. убедитесь, что существует только одна копия string / int), Поведение равенства со всеми различными неизменяемые объектами, которые вы планируете использовать с is будут непредсказуемыми.
Суть в следующем: используйте == в 99% случаев.
Если два объекта идентичны, они также равны, и обратное не всегда верно.
Переопределение операторов == и !=
Операторы != и is not не ведут себя так же, как их «положительные» коллеги (==/is). А именно, != возвращает True, если объекты не имеют одно и то же значение, в то время как is not не возвращает True, если объекты не хранятся в одном и том же адресе памяти.
Еще одно различие между этими двумя операторами заключается в том, что вы можете переопределить поведение == / != для пользовательского класса, в то время как вы не можете переопределить поведение is.
Если вы реализуете собственный метод __eq()__ в своем классе, вы можете изменить поведение операторов == / !=:
Заключение
Короче говоря, == / != проверяет равенство (по значению) и is / is not проверяет идентичность двух объектов, то есть проверяет адреса их памяти.
Однако избегайте использования is если только вы не знаете точно, что делаете, или когда имеете дело с одноэлементными объектами, такими как None, поскольку он может вести себя непредсказуемо.
В этом руководстве мы рассмотрим различные операторы:
Бесплатный курс «Python. Быстрый старт»
Получите курс и узнайте, как создать программу для перевода текстов на Python
Логические или побитовые операторы
Арифметические операторы
Арифметические операторы выполняют различные арифметические вычисления, такие как сложение, вычитание, умножение, деление, % модуля, экспоненты и т. д. В Python существуют различные методы арифметического вычисления, например, вы можете использовать функцию eval, объявить переменную и вычислить или вызвать функции.
Пример: Для арифметических операторов мы возьмем простой пример сложения, где мы сложим два числа 4 + 5 = 9.
Точно так же вы можете использовать другие арифметические операторы, такие как умножение (*), деление (/), вычитание (-) и т. д.
Операторы сравнения
Эти операторы сравнивают значения по обе стороны и определяют отношение между ними. Их также называют реляционными операторами. Различные операторы сравнения: (==,!=, <>,>, y, оно фактически сравнивает значение x с y и, поскольку оно не является истинным, возвращает false.
Точно так же вы можете попробовать другие операторы сравнения (x
Пример составного оператора присваивания
Мы также можем использовать составной оператор присваивания, в котором вы можете добавлять, вычитать, умножать правый операнд на левый и задавать сумму (или любую другую арифметическую функцию) для левого операнда.
Шаг 1. Назначаем значение для num1 и num2
Шаг 2: Добавляем значение num1 и num2 (4 + 5 = 9)
Шаг 3: Добавляем num1 к выводу шага 2 (9 + 4)
Шаг 4: Окончательный результат будет выведен, как 13
Логические операторы
Пример: в этом примере мы получаем true или false, основываясь на значениях a и b:
Операторы принадлежности
Эти операторы проверяют наличие в последовательности, такой как списки, строки или кортежи. В Python используются два оператора принадлежности (in, not in). Они дают результат, исходя из наличия переменной в указанной последовательности или строке.
Пример: Например, здесь мы проверяем, доступно ли в списке значение x=4 и значение y=8, для этого мы используем операторы in и not in.
print ( "Line 1 - x is not available in the given list" ) print ( "Line 2 - y is not available in the given list" )Объявляем значение для х и у
Объявляем значение списка
Используем оператор «in» в коде с оператором if, чтобы проверить существование значения x в списке и вывести результат соответствующим образом.
Бесплатный курс «Python. Быстрый старт»
Получите курс и узнайте, как создать программу для перевода текстов на Python
Используем «not in» в коде с оператором if, чтобы проверить существование значения y в списке и вывести результат соответствующим образом.
Операторы идентификации
Для сравнения расположения в памяти двух объектов используются операторы. В Python используются два оператора идентификации (is, is not).
Следующие операнды расположены в порядке убывания приоритета. Операторы в одном поле оценивают слева направо.
Объявляем значение для переменных x и y
Далее мы используем в коде оператор «is not», чтобы проверить, совпадает ли значение x с y
Приоритет оператора
Приоритет оператора определяет, какие операторы должны быть оценены первыми. Чтобы избежать двусмысленности в значениях, необходим приоритет операторов. Как и в обычном методе умножения, умножение имеет более высокий приоритет, чем сложение. Например, в 3+ 4 * 5 ответом является 23, чтобы изменить порядок приоритета, мы используем круглые скобки (3 + 4) * 5, теперь ответ 35.
Объявляем значение переменных v, w… z
Теперь применяем формулу и запускаем код
Код выполнит и вычислит переменную с более высоким приоритетом и выдаст результат
Пример Python 2
Выше приведены примеры кода Python 3, если вы хотите использовать Python 2, пожалуйста, рассмотрите следующие коды:
print "Line 1 - x is not available in the given list" print "Line 2 - y is not available in the given list"Заключение
Операторы в языке программирования используются для выполнения различных операций над значениями и переменными. В Python вы можете использовать такие операторы:
Существуют различные методы арифметических вычислений, также вы можете использовать функцию eval, объявить переменную и вычислить или вызвать функции
Операторы сравнения, часто называемые реляционными операторами, используются для сравнения значений операндов и определения связи между ними.
Операторы присваивания Python просто присваивают значение переменной
Python также позволяет вам использовать составной оператор присваивания в сложных арифметических вычислениях, где вы можете присваивать результат одного операнда другому
В Python используются два оператора принадлежности (in, not in).
Они дают результат, исходя из присутствия переменной в указанной последовательности или строке
В Python используются два оператора идентификации (is, is not)
Они возвращает true, если две переменные указывают на один и тот же объект, и false в противном случае
Оператор приоритета может быть полезен, когда вам нужно установить приоритет оператора, для которого вычисление должно быть выполнено первым в сложном вычислении.
Редакция: Команда webformyself.
Бесплатный курс «Python. Быстрый старт»
Получите курс и узнайте, как создать программу для перевода текстов на Python
Операторами пользуются для выполнения операций с переменными и значениями.
Python делит операторы на следующие группы:
- Арифметические операторы
- Операторы присваивания
- Операторы сравнения
- Логические операторы
- Операторы тождественности
- Операторы принадлежности
- Побитовые операторы
Арифметические операторы в Python
Арифметические операторы используются с числовыми значениями для выполнения общих математических операций:
Операторы присваивания в Python
Операторы присваивания используются для присваивания значений переменным:
Операторы сравнения в Python
Операторы сравнения используются для сравнения двух значений:
Оператор | Значение | Пример |
---|---|---|
== | равно | x == y |
!= | не равно | x != y |
> | больше чем | x > y |
< | меньше чем | x < y |
>= | больше чем или равно | x >= y |
<= | меньше чем или равно | x <= y |
Логические операторы в Python
Логические операторы используются для объединения условных операторов:
Оператор | Значение | Пример |
---|---|---|
and | Возвращает значение True если оба утверждения верны | x < 5 and x < 10 |
or | Возвращает True если одно из утверждений верно | x < 5 or x < 4 |
not | Меняет результат, возвращает False если результат True | not(x < 5 and x < 10) |
Операторы тождественности в Python
Операторы тождественности используются для сравнения объектов. Являются ли они одним и тем же объектом с одинаковым местоположением в памяти:
Оператор | Значение | Пример |
---|---|---|
is | Возвращает true если переменные являются одним объектом | x is y |
is not | Возвращает true если переменные разные | x is not y |
Операторы принадлежности в Python
Операторы принадлежности используются для проверки того, представлена ли последовательность в объекте:
Оператор | Значение | Пример |
---|---|---|
in | Возвращает True если последовательность присутствует в объекте | x in y |
not in | Возвращает True если последовательность не присутствует в объекте | x not in y |
Побитовые операторы в Python
Побитовые операторы используются для работы в битовом (двоичном) формате:
Читайте также: