Η κατανόηση του συστήματος τύπου Python είναι το κλειδί για την επίλυση αυτού του δύσκολου σφάλματος.

Προσπαθείτε να ανακτήσετε δεδομένα από ένα αντικείμενο και αντ' αυτού βλέπετε ένα σφάλμα "το αντικείμενο δεν είναι εγγεγραμμένο"; Το πρόβλημα είναι ότι καταχωρείτε λάθος τύπο δεδομένων.

Μάθετε τα πάντα σχετικά με τους τύπους με δυνατότητα εγγραφής και τον τρόπο επίλυσης αυτού του σφάλματος.

Τι σημαίνει "Εγγραφή" στην Python;

Ο όρος "εγγραφής" στην Python σημαίνει έναν τύπο δεδομένων που αποθηκεύει πολλαπλές τιμές στις οποίες μπορείτε να έχετε πρόσβαση μεμονωμένα. Μπορείτε να αποκτήσετε πρόσβαση σε μια συγκεκριμένη τιμή από έναν τύπο δεδομένων με δυνατότητα εγγραφής μέσω του ευρετηρίου του, χρησιμοποιώντας σημειογραφία αγκύλης ([]).

Εάν προσπαθήσετε να αποκτήσετε πρόσβαση στα στοιχεία σε έναν τύπο δεδομένων που δεν είναι ευρετηριάσιμο, η Python δημιουργεί μια εξαίρεση "TypeError: αντικείμενο δεν είναι εγγεγραμμένο".

Οι ακόλουθοι τύποι δεδομένων μπορούν να εγγραφούν στην Python: λίστες, συμβολοσειρές, πλειάδες και λεξικά.

instagram viewer
list_example = [1, 3, 5, "Idowu"]
string_example = "Idowu Omisola"
πλειάδα_παράδειγμα = (1, 3, 5, "Idowu")
dict_example = {"όνομα": "Idowu", "Γλώσσα": "Γιορούμπα"}

εκτύπωση (list_example[0]) # 1
εκτύπωση (string_example[3]) # w
εκτύπωση (tuple_example[1]) # 3
εκτύπωση (dict_example["όνομα"]) #Idowu

Ωστόσο, τα σύνολα, οι ακέραιοι αριθμοί, οι κινητήρες και τα Booleans δεν είναι προσβάσιμα μέσω ευρετηρίασης, επομένως δεν μπορούν να εγγραφούν:

float_example = 12.45
int_example = 12367
bool_example = Αληθής
σύνολο_παράδειγμα = {1, 3, 5, "Πύθων"}

εκτύπωση (float_example[1])
εκτύπωση (bool_example[2])
εκτύπωση (int_example[2])
εκτύπωση (set_example[2])

Η προσπάθεια εκτέλεσης καθεμιάς από αυτές τις εντολές εξάγει την εξαίρεση "το αντικείμενο δεν είναι εγγεγραμμένο":

Επίλυση της Εξαίρεσης

Η επίλυση της εξαίρεσης "το αντικείμενο δεν είναι εγγεγραμμένο" είναι ευκολότερη όταν κατανοήσετε τους κανόνες πρόσβασης σε κάθε τύπο δεδομένων. Ξεκινήστε λοιπόν τον εντοπισμό σφαλμάτων στην Python ελέγχοντας τον τύπο δεδομένων του αντικειμένου που προσπαθείτε να δημιουργήσετε ευρετήριο.

float_example = 12.45
int_example = 12367
bool_example = Αληθής
σύνολο_παράδειγμα = {1, 3, 5, "Πύθων"}

εκτύπωση (τύπος (float_example)) #
εκτύπωση (τύπος (int_example)) #
εκτύπωση (τύπος (bool_example)) #
εκτύπωση (τύπος (set_example)) #

Μόλις διαπιστώσετε ότι ο τύπος δεδομένων δεν είναι εγγεγραμμένος, η μετατροπή του σε τύπο με δυνατότητα ευρετηρίου επιλύει το πρόβλημα. Αυτό είναι βολικό εάν τα δεδομένα προέρχονται από ένα API τρίτου μέρους. Η μετατροπή τύπων δεδομένων όπως integer, float και Boolean σε μια συμβολοσειρά τους καθιστά συνδρομητές:

εκτύπωση (str (float_example)[:2]) # 12
εκτύπωση (str (int_example)[:2]) # 12
εκτύπωση (str (bool_example)[:2]) # Tr

Μπορείτε ακόμη και χειριστείτε τις προκύπτουσες συμβολοσειρές Python όπως θέλεις. Εάν έχετε να κάνετε με ακέραιο και float, ίσως θέλετε να διατηρήσετε τον αρχικό τύπο δεδομένων στην έξοδο. Για να το κάνετε αυτό, μετατρέψτε την προκύπτουσα τιμή στον αρχικό τύπο δεδομένων αφού τα καταχωρήσετε ως συμβολοσειρές:

converted_float = float (str (float_example)[:2])
converted_int = int (str (int_example)[:2])

# 12.0 Τύπος δεδομένων:
εκτύπωση (converted_float, f'Τύπος δεδομένων:{type (converted_float)}')

# 12 Τύπος δεδομένων:
εκτύπωση (converted_int, f'Τύπος δεδομένων:{type (converted_int)}')

Όσο για ένα σετ, μπορείτε να το μετατρέψετε σε λίστα. Αν και μπορείτε να μετατρέψετε ένα αντικείμενο συνόλου σε λίστα χρησιμοποιώντας το λίστα (σύνολο) Python one-liner, αυτό δεν διατηρεί τις θέσεις των στοιχείων στη λίστα που προκύπτει. Για να βεβαιωθείτε ότι λαμβάνετε μια λίστα με διατηρημένες θέσεις αντικειμένων, χρησιμοποιήστε τη συνάρτηση λάμδα της Python ως εξής:

σύνολο_παράδειγμα = {1, 3, 5, "Πύθων"}
μετατροπή = ταξινομημένο (σύνολο_παράδειγμα, κλειδί=λάμδα x: (επίπτωση (x, str), x))

εκτύπωση (μετατροπή[3]) # Python

Master Python Debugging

Η Python έχει μια ομαλή καμπύλη εκμάθησης. Αλλά απλές εξαιρέσεις μπορεί να σας απογοητεύσουν αν δεν ξέρετε πώς να τις αντιμετωπίσετε. Η εκμάθηση του εντοπισμού σφαλμάτων του κώδικά σας και η αφιέρωση του χρόνου σας στην επίλυση προβλημάτων οδηγεί σε μεγάλο βαθμό στη διόρθωση σφαλμάτων και εξαιρέσεων κωδικοποίησης Python.