Aprenda o operador de identidade Python e a diferença entre “==” e “is” operador

Aprenda o operador de identidade Python e a diferença entre “==” e “is” operador

Este artigo é com curadoria principalmente para explicar um operador importante em Python (“Operador de identidade”) E como um operador de identidade difere (é, não é) do operador de comparação (==).

Operador de identidade

Operador de identidade ("é" e “Não é”) é usado para comparar o local 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 os dois valores de objeto são idênticos ou não.
  • 'é' compara se ambos o objeto pertence ao mesmo local de memória.

Crie três objetos de string Nome, Nome1, e Nome2. Objeto de string Nome e Nome2 manterá o mesmo valor e Nome1 vai manter valores diferentes.

Quando criamos esses objetos, o que acontece por trás da cena é, 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 os dois valores de objeto são os mesmos. A saída do operador de comparação será um booleano (Verdadeiro ou Falso) valor.

Criar e comparar objetos

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

O embutido Eu ia() Uma função é usada para obter o “identidade”De um objeto. Um número inteiro que será único e constante para o objeto durante sua vida.

Para simplificar, pense isso como um governo único EU IA ou EMP ID Atribuído a você, da mesma forma, um valor inteiro único é atribuído para cada objeto.

Valor inteiro exclusivo

Agora você pode comparar 2 referências de objeto usando "é" operador.

Operador de identidade

Quando eu comparo Nome e Nome1 ou Nome2 Usando o operador de identidade o que ele faz no back -end, é simplesmente executar “ID (nome) == id (nome2)”. Desde id (nome) e id (nome2) Ambos compartilham o mesmo local de memória, ele retorna Verdadeiro.

Agora vem a parte interessante. Veja o nosso exemplo anterior onde ambos Nome e Nome1 tem valores idênticos e retorna o mesmo valor inteiro quando executamos eu ia() função. Por que você pensa "Name_new" e "Name_le”O objeto não é idêntico, mesmo que eles compartilhem os mesmos valores da captura de tela abaixo?

Valores inteiros

Isto é por causa da implementação do design do Python. Quando você cria um objeto inteiro no intervalo (-5.256) e objetos de cordas maiores ou iguais a 20 chars, em vez de criar objetos diferentes na memória para o mesmo valor, esses objetos agem como um ponteiro para os objetos já criados.

Abaixo da representação pictórica lhe dará uma idéia clara do que vimos até agora neste artigo.

Representação diagramática
Resumo

Neste artigo, vimos o que é um operador de identidade. Como é usado operador de comparação e operador de identidade, implementação de design sobre como um objeto é criado na memória.