Pesquisa de site

Aprenda o operador de identidade Python e a diferença entre o operador "==" e "IS"


Este artigo foi criado principalmente para explicar um operador importante em python (“IDENTITY OPERATOR”) e como um operador de identidade difere (é, não é ) do operador de comparação (==).

OPERADOR DE IDENTIDADE

O operador de identidade (“is ” e “is not ”) é usado para comparar a localização da memória do objeto. Quando um objeto é criado na memória, um endereço de memória exclusivo é alocado para esse objeto.

  • ‘==’ compara se ambos os valores do objeto são idênticos ou não.
  • 'is' compara se ambos os objetos pertencem ao mesmo local de memória.

Crie três objetos de string Nome, Nome1 e Nome2. Os objetos de string Nome e Nome2 terão o mesmo valor e Nome1 terão valores diferentes.

Quando criamos esses objetos, o que acontece nos bastidores é que esse objeto será criado na memória e estará disponível durante a vida útil do programa.

Agora você pode usar um operador de comparação “== ” para verificar se ambos os valores do objeto são iguais. A saída do operador de comparação será um valor booleano (True ou False).

Agora que você comparou dois valores para determinar a igualdade, vamos dar uma olhada em como funciona o operador identidade.

A função Id() integrada é usada para obter a “identidade” de um objeto. Um número inteiro que será único e constante para o objeto durante seu tempo de vida.

Para simplificar, pense nisso como um ID governamental exclusivo ou ID Emp atribuído a você, da mesma forma, um valor inteiro exclusivo é atribuído para cada objeto.

Agora você pode comparar 2 referências de objetos usando o operador “is”.

Quando comparo Name e Name1 ou Name2 usando o operador de identidade, o que ele faz no back-end é simplesmente executar “id(Name ) == id(Nome2) ”. Como id(Name) e id(Name2) compartilham o mesmo local de memória, ele retorna True.

Agora vem a parte interessante. Veja nosso exemplo anterior, onde Nome e Nome1 têm valores idênticos e retornam o mesmo valor inteiro quando executamos a função id(). Por que você acha que os objetos “Name_new” e “Name_le” não são idênticos, embora compartilhem os mesmos valores da captura de tela abaixo?

Isso se deve à implementação do design python. Quando você cria um objeto inteiro no intervalo (-5.256) e objetos string maiores ou iguais a 20 caracteres, em vez de criar objetos diferentes na memória para o mesmo valor, esses objetos atuar como um ponteiro para objetos já criados.

A representação pictórica abaixo lhe dará uma ideia clara do que vimos até agora neste artigo.

Resumo

Neste artigo, vimos o que é um operador de identidade. Como o operador de comparação e o operador de identidade são usados, projete a implementação de como um objeto é criado na memória.