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.
LINKS EXTERNOS
- https://stackoverflow.com/questions/132988/is-there-a-difference-between-and-is-in-python
- https://stackoverflow.com/questions/21478442/python-what-difference-between-is-and
- https://stackoverflow.com/questions/15008380/double-equals-vs-is-in-python
- https://dbader.org/blog/difference-between-is-and-equals-in-python
Tags python, operador, is, equal, blog
Comentários
comments powered by Disqus