Ricerca nel sito web

Scopri l'operatore di identità Python e la differenza tra l'operatore "==" e "IS".


Questo articolo è principalmente curato per spiegare un operatore importante in Python (“IDENTITY OPERATOR”) e come differisce un operatore di identità (è, non è ) dall'operatore di confronto (==).

OPERATORE IDENTITARIO

L'operatore di identità (“is ” e “is not ”) viene utilizzato per confrontare la posizione di memoria dell'oggetto. Quando un oggetto viene creato in memoria, a quell'oggetto viene allocato un indirizzo di memoria univoco.

  • '==' confronta se entrambi i valori dell'oggetto sono identici o meno.
  • 'is' confronta se entrambi gli oggetti appartengono alla stessa posizione di memoria.

Crea tre oggetti stringa Nome, Nome1 e Nome2. Gli oggetti stringa Nome e Nome2 manterranno lo stesso valore e Nome1 manterranno valori diversi.

Quando creiamo questi oggetti, ciò che accade dietro le quinte è che quell'oggetto verrà creato in memoria e sarà disponibile per tutta la durata del programma.

Ora puoi utilizzare un operatore di confronto “== ” per verificare se entrambi i valori degli oggetti sono uguali. L'output dell'operatore di confronto sarà un valore booleano (Vero o False).

Ora che hai confrontato due valori per determinare l'uguaglianza, diamo un'occhiata a come funziona l'operatore identità.

La funzione Id() incorporata viene utilizzata per ottenere l'“identità” di un oggetto. Un numero intero che sarà univoco e costante per l'oggetto durante la sua vita.

Per semplificare, pensa a questo come all'ID governativo univoco o all'ID Emp assegnato a te, allo stesso modo viene assegnato un valore intero univoco per ciascun oggetto.

Ora puoi confrontare 2 riferimenti a oggetti utilizzando l'operatore “is ”.

Quando confronto Nome e Nome1 o Nome2 utilizzando l'operatore identità, ciò che fa nel backend è semplicemente che esegue "id(Nome ) == id(Nome2) ”. Poiché id(Nome) e id(Nome2) condividono entrambi la stessa posizione di memoria, restituisce True.

Ora arriva la parte interessante. Guarda il nostro esempio precedente in cui sia Nome che Nome1 hanno valori identici e restituiscono lo stesso valore intero quando eseguiamo la funzione id(). Perché pensi che gli oggetti “Name_new” e “Name_le” non siano identici anche se condividono gli stessi valori dallo screenshot seguente?

Ciò è dovuto all'implementazione del design Python. Quando crei un oggetto intero nell'intervallo (-5.256) e oggetti stringa maggiori o uguali a 20 caratteri, invece di creare oggetti diversi in memoria per lo stesso valore questi oggetti fungere da puntatore a oggetti già creati.

La rappresentazione pittorica di seguito vi darà un'idea chiara di ciò che abbiamo visto finora in questo articolo.

Riepilogo

In questo articolo abbiamo visto cos'è un operatore identità. Come vengono utilizzati l'operatore di confronto e l'operatore di identità, implementazione del progetto su come un oggetto viene creato in memoria.