Operadores de Identidade em Python
Os operadores de identidade são uma ferramenta especializada para verificar locais de memória de objetos. Eles são particularmente indicados quando as comparações de igualdade de valor não são suficientes. Ao comparar os endereços de memória de dois objetos, os operadores de identidade determinam se eles fazem referência ao mesmo objeto na memória. Essa distinção no local de memória de objetos é crucial porque objetos diferentes podem ter os mesmos valores, mas residirem em locais de memória separados.
Os operadores de identidade são usados com menos frequência do que os operadores de comparação (== e !=) porque geralmente nos programas o foco é na igualdade de valor. Também é importante notar que, objetos mutáveis (como listas, dicionários) não são considerados o mesmo objeto pelos operadores de identidade mesmo quando possuem os mesmos elementos. Isso ocorre porque o Python cria novos objetos na memória para objetos mutáveis quando eles são atribuídos. Além disso, o Python pode reutilizar locais de memória para pequenos objetos imutáveis (inteiros, strings) com os mesmos valores.
Tipos de Operadores de Identidade
is
Retorna True se os operandos de ambos os lados se referirem ao mesmo objeto na memória.
# exemplo 1
nb1 = 10
nb2 = 10
print(nb1 is nb2)
# resultado: True
# exemplo 2
nome1 = 'Maria'
nome2 = 'Maria'
print(nome1 is nome2)
# resultado: True
Mas atenção com o uso de operadores de identidade para objetos mutáveis como listas como explicado acima.
"""
IMPORTANTE: operadores de identidade não consideram objetos mutáveis
como iguais mesmo quando eles possuem os mesmos elementos
"""
lista1 = ['Maria', 10]
lista2 = ['Maria', 10]
print(lista1 is lista2)
# resultado: False
is not
Retorna True se os operandos de ambos os lados não se referirem ao mesmo objeto na memória.
lista1 = ['Maria', 10]
lista2 = ['Maria', 10]
print(lista1 is not lista2)
# resultado: True
Qual é a diferença entre os operadores is e ==?
Operadores de identidade são facilmente confundidos com operadores de igualdade (comparação). Portanto, é importante saber diferenciá-los bem. O operador == compara os valores de dois objetos e retorna True se eles forem iguais e False caso contrário. O operador is analisa a identidade (local da memória) de dois objetos e retorna True se eles ocuparem o mesmo local da memória e False caso contrário. Ou seja, o operador == verifica se os valores de dois objetos são os mesmos, enquanto o operador is verifica se as duas variáveis se referem ao mesmo objeto na memória.
'''
o operador == verifica se os valores de dois objetos são os iguais
o operador is verifica se duas variáveis se referem ao mesmo objeto na memória
'''
set1 = {'Ana', 100, 'oi'}
set2 = {'Ana', 100, 'oi'}
print(set1 == set2)
# resultado: True
print(set1 is set2)
# resultado: False
Encontrou algum erro ou quer fazer uma sugestão? Por favor, entre em contato usando nosso formulário de contatos.