Vamos examinar agora a diferença entre 2 operadores do Python o operador is e o operador == (igual)

ANALISANDO A IGUALDADE ENTRE VALORES E IDENTIDADES

A linguagem Python possui 2 operadores que não raramente causam confusão, são eles: o operador is e o operador ==. Ambos operadores são utilizados para comparar 2 variáveis, porém, a igualdade verificada é diferente!

O OPERADOR is

O operador is verifica se 2 identificadores (variáveis) apontam para um mesmo objetos. Por exemplo:

>>> a = [1, 2, 3]
>>> b = a
>>> a is b
True

No código acima associamos uma lista à variável a. Em seguida, associamos o objeto associado a variável a com a variável b. Por fim utilizamos o operador is para verificar se o identificar a e o identificador b estão associados a um mesmo objeto. Neste caso o resultado é verdadeiro, até porque, tanto a variável a como a variável b estão associadas ao mesmo objeto na memória.

Agora, continuemos o estudo considerando o código anterior.

>>> c = list(a)
>>> a is c
False
>>> b is c
False
>>> a is b
True

Utilizamos a função built-in list() com a finalidade de não utilizar a mesma instância que os identificadores a e b estão associados. Assim conseguimos garantir que teremos uma mesma lista porém, ocupando um outro local na memória.

Concluímos assim que o operador is verifica se 2 identificadores (variáveis) estão associados (apontam) para o mesmo objeto na memória.

O OPERADOR ==

O operador == irá verificar se o valor contido no membro a esquerda é igual ao valor do membro a sua direita. Para o operador == é indiferente se ambos operandos estão ou não estão associados ao mesmo objeto na memória.

Continuando o código escrito anteriormente, temos que:

>>> a == b
True
>>> b == c
True
>>> c == a
True
>>> a == []
False

No trecho de código acima que continua o código anteriormente estudado estamos verificando agora se o valor que o identificador a está associado é igual ao valor que o identificador b está associado e a resposta é verdadeira, até porque, ambos identificadores apontam para o mesmo objeto na memória.

Em seguida verificamos se o valor do identificador b é igual ao valor do identificador c e novamente obtivemos como resposta sim, até porque, o valor de b é [1, 2, 3] enquanto que o valor do identificador c também é uma lista, contendo os mesmos 3 membros [1, 2, 3].

CONCLUSÃO

Podemos concluir do estudo acima que o operador is verifica se os 2 membros apontam para o mesmo objeto na memória, ou então, se o id de ambos operandos é igual.

O operador == por sua vez irá verificar se os valores de ambos os membros são iguais, indiferentes se os membros são o mesmo objeto na memória.



Tags python, operador, is, equal, blog

Comentários

comments powered by Disqus