Μάθετε Python Identity Operator and Difference Between "==" και "IS" Operator


Αυτό το άρθρο έχει επιμεληθεί κυρίως να εξηγήσει έναν σημαντικό τελεστή στην python (“IDENTITY OPERATOR ”) και πώς διαφέρει ένας τελεστής ταυτότητας (είναι, δεν είναι ) από τον τελεστή σύγκρισης (==).

ΧΕΙΡΙΣΤΗΣ ΤΑΥΤΟΤΗΤΑΣ

Ο τελεστής ταυτότητας ("είναι " και "δεν είναι ") χρησιμοποιείται για τη σύγκριση της θέσης μνήμης του αντικειμένου. Όταν δημιουργείται ένα αντικείμενο στη μνήμη, εκχωρείται μια μοναδική διεύθυνση μνήμης σε αυτό το αντικείμενο.

  • Το ‘==’ συγκρίνει εάν και οι δύο τιμές αντικειμένων είναι ίδιες ή όχι.
  • Το 'is' συγκρίνει εάν και τα δύο αντικείμενα ανήκουν στην ίδια θέση μνήμης.

Δημιουργήστε τρία αντικείμενα συμβολοσειράς Όνομα, Όνομα1 και Όνομα2. Το αντικείμενο συμβολοσειράς Όνομα και Όνομα2 θα έχουν την ίδια τιμή και το Όνομα1 θα έχει διαφορετικές τιμές.

Όταν δημιουργούμε αυτά τα αντικείμενα, αυτό που συμβαίνει πίσω από τη σκηνή είναι ότι αυτό το αντικείμενο θα δημιουργηθεί στη μνήμη και θα είναι διαθέσιμο κατά τη διάρκεια ζωής του προγράμματος.

Τώρα μπορείτε να χρησιμοποιήσετε έναν τελεστή σύγκρισης “== ” για να ελέγξετε αν και οι δύο τιμές αντικειμένων είναι ίδιες. Η έξοδος του τελεστή σύγκρισης θα είναι μια τιμή Boolean (True ή False).

Τώρα που συγκρίνατε δύο τιμές για να προσδιορίσετε την ισότητα, ας ρίξουμε μια ματιά στον τρόπο λειτουργίας του τελεστή ταυτότητας.

Η ενσωματωμένη συνάρτηση Id() χρησιμοποιείται για τη λήψη της "ταυτότητας " ενός αντικειμένου. Ένας ακέραιος αριθμός που θα είναι μοναδικός και σταθερός για το αντικείμενο κατά τη διάρκεια της ζωής του.

Για να το κάνετε απλό, σκεφτείτε ότι αυτό είναι μοναδικό ID ή Emp ID που σας έχει εκχωρηθεί, επίσης εκχωρείται μια μοναδική ακέραια τιμή για κάθε αντικείμενο.

Τώρα μπορείτε να συγκρίνετε 2 αναφορές αντικειμένων χρησιμοποιώντας τον τελεστή “is ”.

Όταν συγκρίνω το Name και το Name1 ή το Name2 χρησιμοποιώντας τον τελεστή ταυτότητας, αυτό που κάνει στο backend είναι ότι απλώς εκτελεί το “id(Name ) == id(Όνομα2) ”. Εφόσον το id(Name) και το id(Name2) μοιράζονται και τα δύο την ίδια θέση μνήμης, επιστρέφει True.

Τώρα έρχεται το ενδιαφέρον μέρος. Κοιτάξτε το προηγούμενο παράδειγμά μας όπου και το Όνομα και το Όνομα1 έχουν πανομοιότυπες τιμές και επιστρέφει την ίδια ακέραια τιμή όταν εκτελούμε τη συνάρτηση id(). Γιατί πιστεύετε ότι το αντικείμενο "Name_new " και "Name_le " δεν είναι πανομοιότυπα, παρόλο που μοιράζονται τις ίδιες τιμές από το παρακάτω στιγμιότυπο οθόνης;

Αυτό οφείλεται στην υλοποίηση σχεδίασης python. Όταν δημιουργείτε ένα ακέραιο αντικείμενο στην περιοχή (-5.256) και τα αντικείμενα συμβολοσειράς μεγαλύτερα ή ίσα με 20 χαρακτήρες, αντί να δημιουργείτε διαφορετικά αντικείμενα στη μνήμη για την ίδια τιμή, αυτά τα αντικείμενα λειτουργεί ως δείκτης σε ήδη δημιουργημένα αντικείμενα.

Η παρακάτω εικονογραφική αναπαράσταση θα σας δώσει μια σαφή ιδέα για το τι έχουμε δει μέχρι τώρα σε αυτό το άρθρο.

Περίληψη

Σε αυτό το άρθρο, είδαμε τι είναι ένας τελεστής ταυτότητας. Πώς χρησιμοποιείται ο τελεστής σύγκρισης και ο τελεστής ταυτότητας, υλοποίηση σχεδιασμού για το πώς δημιουργείται ένα αντικείμενο στη μνήμη.