Μεταβλητά & αμετάβλητα αντικείμενα σε Python {ΠΑΡΑΔΕΙΓΜΑΤΑ}
Τι είναι ένα Μεταβλητό Αντικείμενο;
Μεταβλητό σε Python μπορεί να οριστεί ως το αντικείμενο που μπορεί να αλλάξει ή να θεωρηθεί ως κάτι μεταβλητό στη φύση. Μεταβλητό σημαίνει τη δυνατότητα τροποποίησης ή επεξεργασίας μιας τιμής.
Μεταβλητά αντικείμενα σε Python επιτρέπουν στους προγραμματιστές να έχουν αντικείμενα που μπορούν να αλλάξουν τις τιμές τους. Γενικά χρησιμοποιούνται για την αποθήκευση μιας συλλογής δεδομένων. Μπορεί να θεωρηθεί ως κάτι που έχει μεταλλαχθεί και η εσωτερική κατάσταση που ισχύει σε ένα αντικείμενο έχει αλλάξει.
Τι είναι τα αμετάβλητα αντικείμενα;
Αμετάβλητα αντικείμενα μέσα Python μπορούν να οριστούν ως αντικείμενα που δεν αλλάζουν τις τιμές και τα χαρακτηριστικά τους με την πάροδο του χρόνου.
Αυτά τα αντικείμενα γίνονται μόνιμα μόλις δημιουργηθούν και αρχικοποιηθούν και αποτελούν ένα κρίσιμο μέρος των δομών δεδομένων που χρησιμοποιούνται Python.
Python χρησιμοποιείται σε αριθμούς, πλειάδες, συμβολοσειρές, παγωμένα σύνολα και κλάσεις που καθορίζονται από τον χρήστη με ορισμένες εξαιρέσεις. Δεν μπορούν να αλλάξουν, και οι τιμές τους και παραμένουν μόνιμες μόλις αρχικοποιηθούν και ως εκ τούτου ονομάζονται αμετάβλητες.
In Python, τα πάντα είναι ένα αντικείμενο
Στο Python γλώσσα προγραμματισμού, τα πάντα μπορούν να θεωρηθούν ως ένα αντικείμενο που περιλαμβάνει λίστες, ακέραιους αριθμούς και συναρτήσεις. Αυτή η δυνατότητα μπορεί να συγκριθεί με άλλες γλώσσες προγραμματισμού που υποστηρίζουν αντικείμενα.
Αυτή η δυνατότητα μπορεί να επαληθευτεί χρησιμοποιώντας ένα Python διερμηνέας όπως φαίνεται παρακάτω: –
Python code:
print("The following instance is an object:",isinstance(3,object)) print("Another instance for object", isinstance(True, object)) def my_func(): return "guru99" print("This is a function example and regarded as an object in Python:", isinstance(my_func, object))
Παραγωγή:
A following instance is an object: True Another instance for object True This is a function example and regarded as an object in Python: True
Περαιτέρω, Python παρέχει μια ενσωματωμένη συνάρτηση με το όνομα id που επιστρέφει τη διεύθυνση του αντικειμένου όπως υπάρχει στη μνήμη του Python γλώσσα προγραμματισμού.
Python code:
z=200 id(z) print("The id of object is", id(z))
Παραγωγή:
the id of object is 9795360
Στον παραπάνω κώδικα, η συνάρτηση id με σύνταξη ως id(obj) δίνει τη διεύθυνση του obj στο Python μνήμη. Εδώ, υπάρχει ένα αντικείμενο με το όνομα z και έχει εκχώρηση 200. Το αντικείμενο z μεταβιβάζεται στη συνάρτηση id ως id(z) και το Python παραδίδει τη διεύθυνση του αντικειμένου ως 9795360.
Μεταβλητά αντικείμενα σε Python
Σε ένα μεταβλητό αντικείμενο, η τιμή του αντικειμένου αλλάζει σε μια χρονική περίοδο.
Σε αυτό το παράδειγμα, έχουμε εξηγήσει τα μεταβλητά αντικείμενα Python, και αυτό χρησιμοποιεί λίστες ως εφαρμογή μεταβλητών αντικειμένων όπως φαίνεται παρακάτω: –
Python Κώδικας:
mut_list = [1, 2, 3] print("The list in Python",mut_list) mut_list[0] = 'Gurru99' mut_list print("The list in Python after changing value",mut_list)
Παραγωγή:
The list in Python [1, 2, 3] The list in Python after changing value ['Gurru99', 2, 3]
Όπως μπορούμε να δούμε στο παραπάνω παράδειγμα, η μεταβλητή λίστα in Python είχε τιμές 1,2,3. Το πρώτο στοιχείο της λίστας με δυνατότητα αλλαγής αλλάζει από 1 σε Guru99 και δεν δημιουργεί νέο αντικείμενο όταν αρχικοποιείται μια νέα τιμή.
Εδώ μπορούμε να χρησιμοποιήσουμε τη μέθοδο id για να το χρησιμοποιήσουμε. Τα ακόλουθα απεικονίζουν τη χρήση της μεθόδου id για μεταβλητά αντικείμενα όπως φαίνεται παρακάτω: –
Python Κώδικας:
mut_list = [1, 2, 3] print("The list in Python",mut_list) print("the id of the list is ",id(mut_list)) mut_list[0] = 'Gurru99' mut_list print("The mut list in Python after changing value",mut_list) print("the id of the list is post change in value",id(mut_list))
Παραγωγή
The list in Python [1, 2, 3] the id of the list is 139931568729600 The list in Python after changing value ['Gurru99', 2, 3] the id of the list is post change in value 139931568729600
Το παρακάτω σχήμα απεικονίζει το μεταβλητό αντικείμενο Python όπως φαίνεται παρακάτω: –
Αμετάβλητα αντικείμενα μέσα Python
Αμετάβλητα αντικείμενα μέσα Python είναι αντικείμενα στα οποία τα στιγμιότυπα δεν αλλάζουν κατά τη διάρκεια της περιόδου. Τα αμετάβλητα στιγμιότυπα ενός συγκεκριμένου τύπου, αφού δημιουργηθούν, δεν αλλάζουν και αυτό μπορεί να επαληθευτεί χρησιμοποιώντας τη μέθοδο id του Python.
Ας πάρουμε ένα παράδειγμα αντικειμένων ακέραιου τύπου Python που απεικονίζει την έννοια των αμετάβλητων αντικειμένων σε Python όπως φαίνεται παρακάτω: –
Python Κώδικας:
a=244 print("the number before change is",a) print("the id of number before change is",id(a)) a=344 print("the number after change is",a) print("the id of number after change is",id(a))
Παραγωγή
the number before a change is 244 the id of number before change is 9796768 the number before change is 344 the id of number before change is 140032307887024
Θα μπορούσε να φανεί παραπάνω ότι υπάρχει αλλαγή στο "a". Ας μελετήσουμε πώς λειτουργεί ο μηχανισμός:
- Δεν υπάρχει αλλαγή στην τιμή του αντικειμένου κατά την αρχικοποίηση του "a" με 344.
- Αντίθετα, δημιουργείται ένα νέο αντικείμενο και οριοθετείται με "a".
- Το άλλο αντικείμενο που έχει εκχωρηθεί ως 244 δεν θα είναι πλέον προσβάσιμο.
- Το παραπάνω παράδειγμα χρησιμοποίησε ένα ακέραιο αντικείμενο.
Στο a=244, δημιουργείται ένα νέο αντικείμενο και αναφέρεται στο "a" όπως φαίνεται παρακάτω: –
Δημοσίευση χρησιμοποιώντας a=344, υπάρχει ένα νέο αντικείμενο που αναφέρεται με "a". Το παρακάτω διάγραμμα αντιπροσωπεύει το ίδιο: -
Επομένως, κάθε φορά που υπάρχει η εκχώρηση νέας τιμής στο όνομα του τύπου int, υπάρχει αλλαγή στη σύνδεση του ονόματος με άλλο αντικείμενο. Η ίδια αρχή ευθυγραμμίζεται με τις πλειάδες, χορδές, float και Boolean ως εκ τούτου ονομάζονται αμετάβλητα.
Συνέπειες για κλειδιά λεξικού στο Python
Τα λεξικά μπορούν να οριστούν ως οι ταξινομημένες συλλογές που αποθηκεύουν δεδομένα στη μορφή κλειδιού και δεν επιτρέπουν διπλότυπα. Τα λεξικά περιέχουν ένα κλειδί που έχει το αντίστοιχο ζεύγος τιμών ευθυγραμμισμένο με αυτό. Είναι μεταβλητά σε τύπους και το περιεχόμενό τους μπορεί να αλλάξει ακόμη και μετά την προετοιμασία και τη δημιουργία τους.
Ανά πάσα στιγμή, το κλειδί δείχνει ένα συγκεκριμένο στοιχείο κάθε φορά. Τα κλειδιά των λεξικών είναι αμετάβλητα.
Ας πάρουμε ένα υποθετικό σενάριο όπως φαίνεται παρακάτω: –
a = [4, 6] b = [5, 6, 7] my_dict = {a: 'x', b: 'y'} print(my_dict)
Έξοδος: – Τα παραπάνω Python Ο κώδικας δεν παράγει κανένα αποτέλεσμα, και αντ' αυτού, δημιουργεί ένα σφάλμα τύπου τύπου unhashable. Αυτή είναι μια υποθετική κατάσταση και δεν χρησιμοποιείται στο Python μεταγλωττιστής.
Εδώ, a
ορίζεται ως [4,6] και στο λεξικό ορίζεται ως x. Εδώ, b
ορίζεται ως [5,6,7] και στο λεξικό ορίζεται ως y.
- Το κλειδί 'a' έχει την τιμή [4,6] και αρχικοποιείται περαιτέρω σε x.
- Το κλειδί 'b' έχει την τιμή [5,6,7] η οποία αρχικοποιείται περαιτέρω σε 'y' σε ένα λεξικό.
- Τώρα υποθέστε ότι η τιμή του 'ένα' επισυνάπτεται με το 5 και το 7, το οποίο είναι ένα κλειδί για το λεξικό.
- Τότε το λεξικό έχει μεταλλαχθεί και θα έδινε και τα δύο 'Χ' και «ε» ως τιμές για το παραπάνω λεξικό.
Εξετάστε το ακόλουθο σενάριο όπως φαίνεται παραπάνω: –
a = [5, 6,7] b = [5, 6, 7] my_dict = {a: 'x', b: 'y'} print(my_dict)
Ως εκ τούτου, ως γλώσσα προγραμματισμού, Python κάνει τα κλειδιά του λεξικού αμετάβλητα και τα λεξικά είναι αμετάβλητοι τύποι δεδομένων.
Εξαιρέσεις στο αμετάβλητο
Ωστόσο, Python παρέχει εξαιρέσεις για αμετάβλητο τέτοιες εξαιρέσεις μπορούν να παρατηρηθούν για τον τύπο πολλαπλών αντικειμένων. Μια πλειάδα μπορεί να είναι ένας συνδυασμός μεταβλητών και αμετάβλητων τύπων αντικειμένων. Ας πάρουμε ένα παράδειγμα για να εξηγήσουμε τις εξαιρέσεις στο αμετάβλητο όπως φαίνεται παρακάτω: –
Python Κώδικας:
tupexample=([1,1],'guru99') print("the tuple before change",tupexample) print("the id of tuple before change",id(tupexample)) tupexample=([2,2],'guru99') print("the tuple after change",tupexample) print("the id of tuple after change",id(tupexample))
Παραγωγή:
the tuple before change ([1, 1], 'guru99') the id of tuple before change 140649480694656 the tuple after change ([2, 2], 'guru99') the id of tuple after change 140649480694592
Μπορείτε να δείτε στον παραπάνω κώδικα ότι το πρώτο στοιχείο, που είναι μια λίστα, είναι μεταβλητό, ενώ η πλειάδα είναι αμετάβλητη. Η τιμή της πλειάδας δεν μπορεί να αλλάξει, αλλά τα περιεχόμενα της λίστας που υπάρχει μέσα στην πλειάδα μπορούν να αλλάξουν την τιμή της.
Επομένως, αυτό δημιουργεί μια εξαίρεση ότι τα αμετάβλητα αντικείμενα δεν αλλάζουν την αξία τους, αλλά η τιμή των συστατικών αλλάζει την αξία τους.
Μεταβλητά έναντι αμετάβλητων αντικειμένων
Ακολουθούν σημαντικές διαφορές μεταξύ Μεταβλητών και Αμετάβλητων Αντικειμένων:
Μεταβλητό αντικείμενο | Αμετάβλητο αντικείμενο |
---|---|
Η κατάσταση του αντικειμένου μπορεί να αλλάξει μόλις δημιουργηθεί | Η κατάσταση του αντικειμένου δεν μπορεί να αλλάξει μόλις δημιουργηθεί |
Τα μεταβλητά αντικείμενα δεν θεωρούνται ως ασφαλή για νήματα στη φύση. | Τα αμετάβλητα αντικείμενα θεωρούνται ως ασφαλή για το νήμα στη φύση. |
Τα μεταβλητά αντικείμενα δεν γίνονται οριστικά, και ως εκ τούτου ο προγραμματιστής μπορεί να συνεχίσει να αλλάζει μεταβλητά αντικείμενα και να χρησιμοποιεί τα ίδια αντικείμενα. | Είναι κρίσιμο να κάνουμε τις κλάσεις οριστικές όταν υπάρχει η δημιουργία του αμετάβλητου αντικειμένου |
Python Αμετάβλητοι τύποι δεδομένων
Τάξη | εξήγηση | Αμετάβλητο ή όχι |
---|---|---|
Bool | Boolean τιμή | Αμετάβλητος |
Int | Ακέραια τιμή (το μέγεθος μπορεί να είναι αυθαίρετο) | Αμετάβλητος |
φλοτέρ | Αριθμός κινητής υποδιαστολής | Αμετάβλητος |
Λιστα | Ακολουθία αντικειμένων μεταβλητής φύσης | Ευμετάβλητος |
Πλειάδα | Ακολουθία αντικειμένων αμετάβλητης φύσης | Αμετάβλητος |
Οδός | Χαρακτήρας /χορδή | Αμετάβλητος |
σετ | σύνολο διακριτών αντικειμένων που είναι αυθόρμητης φύσης | Ευμετάβλητος |
Frozenset | Σύνολο κλάσης αμετάβλητης φύσης | Αμετάβλητος |
Dict | Λεξικό ή συνειρμική χαρτογράφηση | Ευμετάβλητος |