Python AssertionError

Python Assertionerror



Όταν ένα πρόγραμμα Python αντιμετωπίζει μια απροσδόκητη συνθήκη κατά την εκτέλεση, το πρόγραμμα σταματά την εκτέλεση και επιστρέφει μια εξαίρεση. Στην Python, εξαιρέσεις και συντακτικά σφάλματα είναι οι δύο κύριες κατηγορίες σφαλμάτων. Όταν ένα κομμάτι κώδικα Python που είναι συντακτικά έγκυρο δημιουργεί ένα σφάλμα, είναι γνωστό ως αύξηση εξαίρεσης/σφάλματος. Το μήνυμα σφάλματος στην τελευταία γραμμή καθορίζει τον ακριβή τύπο της εξαίρεσης και παρέχει μια περιγραφή για να βοηθήσει στον εντοπισμό σφαλμάτων και ένα βέλος δείχνει τη γραμμή ή την τοποθεσία όπου σημειώθηκε η εξαίρεση. Η σύλληψη και η διαχείριση εξαιρέσεων είναι ζωτικής σημασίας για την αποφυγή ξαφνικού σφάλματος προγράμματος. Χρησιμοποιήστε έναν διαφορετικό τρόπο για να εκτελέσετε τον κώδικα. Για παράδειγμα, όταν εμφανίζεται η καθορισμένη εξαίρεση. Αυτό το σεμινάριο θα συζητήσει το AssertionError και πώς μπορείτε να το επιλύσετε στην Python.

Τι είναι ένα σφάλμα ισχυρισμού στην Python;

Τα σφάλματα διαβεβαίωσης είναι μια έννοια προγραμματισμού που εμφανίζεται όταν ένας προγραμματιστής γράφει ή δημιουργεί ένα μπλοκ κώδικα που χρησιμοποιείται για να δηλώσει ότι ένα κριτήριο ή συνθήκη πρέπει να πληρούται πριν από την εκτέλεση της λειτουργικής μονάδας. Όπως κάθε σφάλμα Python, ο έλεγχος μεταφέρεται στην επόμενη γραμμή κώδικα εάν η συνθήκη που καθορίστηκε όταν ο ισχυρισμός δηλώθηκε αληθής. Εάν είναι ψευδές, από την άλλη πλευρά, εμφανίζεται ένα σφάλμα ή εξαίρεση και το πρόγραμμα διακόπτεται. Η δήλωση ισχυρισμού μπορεί να χρησιμοποιηθεί σε διάφορες γλώσσες προγραμματισμού με τις συγκεκριμένες συντακτικές τους, επειδή είναι ανεξάρτητη από τη γλώσσα. Είναι μια υποκλάση ή μια παρουσία της κλάσης Exception. Το Python AssertionError έχει την ακόλουθη σύνταξη:

Σύνταξη: διεκδίκηση συνθήκης, error_message (προαιρετικό)







Παράδειγμα

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





Τώρα, τι γίνεται αν εισάγουμε μια ηλικία μικρότερη από το 0;





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



Πώς λειτουργεί το AssertionError στην Python

Η γλώσσα Python περιλαμβάνει μια δήλωση ισχυρισμού που μπορεί να χρησιμοποιηθεί για τη δημιουργία απλών εξόδων μηνυμάτων σφάλματος με λογικούς ισχυρισμούς. Όταν η δήλωση διεκδίκησης αποτυγχάνει, δημιουργείται μια 'εξαίρεση' AssertionError. Στην Python, οι κλάσεις εξαίρεσης προέρχονται από την κλάση BaseException. Η κλάση BaseException, η οποία είναι επίσης η βασική κλάση της κλάσης AssertionError, είναι από την οποία προέρχεται η κλάση Exception. Θα πρέπει πάντα να υπάρχει κατάλληλος κώδικας χειρισμού εξαιρέσεων για την αντιμετώπιση της αποτυχίας μιας δήλωσης διεκδίκησης όποτε χρησιμοποιείται. Ο προεπιλεγμένος χειριστής εξαιρέσεων στην Python θα εκτυπώσει το μήνυμα σφάλματος που γράφτηκε από τον προγραμματιστή, αλλά το σφάλμα μπορεί επίσης να αντιμετωπιστεί ή να επιλυθεί χωρίς μήνυμα σφάλματος.

Εφαρμογή AssertionError στην Python

Ακολουθούν πολλά παραδείγματα AssertionError στην Python:

Παράδειγμα

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

Η τιμή της ακτίνας 'r' μεταβιβάζεται ως είσοδος σε μια συνάρτηση στο προηγούμενο πρόγραμμα που δημιουργήθηκε για να βρει την περιοχή του κύκλου. Στη συνέχεια, η δήλωση διεκδίκησης χρησιμοποιείται για να προσδιορίσει εάν η παρεχόμενη τιμή ή η ακτίνα 'r' είναι κάτω από το μηδέν, και εάν παρέχεται αρνητική τιμή σε αυτήν, θα δημιουργηθεί εξαίρεση. Η περιοχή του κύκλου θα επιστραφεί με βάση την τιμή της ακτίνας 'r' που παρέχεται στη συνάρτηση. Αρχικά, η συνάρτηση εκτελείται με τιμή r ως 3. Στη συνέχεια, η συνάρτηση εκτελείται με την τιμή 2,5. Το AssertionError αυξάνεται όταν χρησιμοποιούμε μια αρνητική τιμή 'r', δηλαδή '-1'.

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

Παράδειγμα

Σε αυτό το παράδειγμα, το πρόγραμμα θα καθορίσει αν η τιμή του παρονομαστή είναι μη μηδενική.

Το μήνυμα σφάλματος του ισχυρισμού εμφανίζεται στο προηγούμενο πρόγραμμα. Έχουμε δημιουργήσει δύο μεταβλητές (α και β) και οι ακέραιες τιμές καθορίζουν τις μεταβλητές. Στη συνέχεια, η δεύτερη μεταβλητή, δηλ. b ελέγχεται για να διαπιστωθεί εάν δεν είναι ίση με 0 χρησιμοποιώντας την εντολή assert. Διαφορετικά καθορίζεται, εκτυπώνεται το μήνυμα σφάλματος. Εάν όχι, εμφανίζεται το αποτέλεσμα της διαίρεσης του πρώτου αριθμού με τη δεύτερη τιμή. Στην προηγούμενη εικόνα, εμφανίζεται η έξοδος του προγράμματος.

Εφαρμογές του AssertionError

Οι άλλες ευεργετικές χρήσεις του λάθους ισχυρισμού περιλαμβάνουν:

  • Ο ισχυρισμός βοηθά στην αξιολόγηση των τιμών των παραμέτρων
  • Οι ισχυρισμοί βοηθούν στην παρακολούθηση του τύπου εισόδου και στο εάν αυτή η τιμή είναι έγκυρη
  • Επιπλέον, οι ισχυρισμοί βοηθούν στον εντοπισμό εάν κάποιος άλλος προγραμματιστής κώδικα κάνει κακή χρήση μιας διεπαφής
  • Οι ισχυρισμοί βοηθούν στη συνεχή παρακολούθηση της παραγωγής του προγράμματος

Πώς μπορούμε να αποφύγουμε τα σφάλματα διεκδίκησης στην Python

  1. Η σημαία -O σε ένα πρόγραμμα Python μπορεί να χρησιμοποιηθεί για την απενεργοποίηση κάθε δήλωσης ισχυρισμού. Είναι σημαντικό να έχετε κατά νου ότι οι δηλώσεις που έρχονται μετά από μια δήλωση ισχυρισμών δεν θα εκτελεστούν εάν απενεργοποιήσουμε τις δηλώσεις ισχυρισμών.
  2. Η μεταβλητή περιβάλλοντος μπορεί επίσης να ορίσει μια σημαία για να απενεργοποιήσει τις δηλώσεις ισχυρισμών. Όλες οι διαδικασίες και οι εφαρμογές που χρησιμοποιούν ή κληρονομούν το περιβάλλον επηρεάζονται σε αυτήν την κατάσταση.
  3. Στην Python, η απλούστερη προσέγγιση για την αποφυγή σφαλμάτων ισχυρισμών είναι ο χειρισμός τους με μη αυτόματο τρόπο. Εάν διασφαλίσουμε ότι η ροή ελέγχου του προγράμματος εκτρέπεται έτσι ώστε να μην έχει πρόσβαση στις δηλώσεις ισχυρισμών, τότε δεν υπάρχει περίπτωση για σφάλματα ισχυρισμών.

Χειρισμός του λάθους ισχυρισμού

Εκτός από τη δήλωση ισχυρισμού, μπορούμε επίσης να χειριστούμε το σφάλμα ισχυρισμού χρησιμοποιώντας τις ακόλουθες μεθόδους:

Χειρισμός του σφάλματος ισχυρισμού χρησιμοποιώντας τα μπλοκ Try-Except

Η δήλωση διεκδίκησης καθορίζει εάν οι τιμές είναι ίσες. Το μπλοκ δοκιμής δημιουργεί το σφάλμα AssertionError επειδή αυτοί οι ακέραιοι αριθμοί δεν είναι ίσοι. Η εντολή εκτύπωσης εκτελείται αφού το μπλοκ εκτός έχει συλλάβει την εξαίρεση. Εδώ, εμφανίζεται η έξοδος της δήλωσης εκτύπωσης από το μπλοκ εξαιρέσεων. Η λέξη-κλειδί αύξησης μπορεί να χρησιμοποιηθεί για να αυξήσει ξανά το σφάλμα στο μπλοκ εκτός, ώστε να μπορούμε να προσδιορίσουμε την πηγή της εξαίρεσης. Όταν προκύπτει μια εξαίρεση, η λέξη-κλειδί 'αύξηση' θα εμφανίσει σφάλμα και θα τερματίσει το πρόγραμμα. Βοηθά στη διατήρηση ή την τήρηση αρχείου/καταγραφής της υπάρχουσας εξαίρεσης.

Χειρισμός του λάθους ισχυρισμού με χρήση της ενότητας ανίχνευσης

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

Χρησιμοποιώντας τη λειτουργική μονάδα ανίχνευσης, η δήλωση εκτύπωσης μπορεί να γραφτεί με σύμβολα κράτησης θέσης {}.

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

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

Τα τρία στοιχεία της δήλωσης 'raise' — exc_type, exc_traceback και exc_value — επιστρέφονται από τη συνάρτηση sys.exc_info().

Χειρισμός του λάθους ισχυρισμού με χρήση της εκτυπωτικής δήλωσης

Για να χειριστούμε μη αυτόματα μια εξαίρεση, μπορούμε να χρησιμοποιήσουμε τη δήλωση 'εκτύπωση' μέσα στο μπλοκ εκτός.

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

Αντί για σφάλμα, εμφανίζεται ένα σύντομο μήνυμα.

συμπέρασμα

Σε αυτήν την ανάρτηση, είδαμε για πρώτη φορά την εισαγωγή των εξαιρέσεων στην Python. Συζητήσαμε το AssertionError, πώς λειτουργεί και πώς μπορούμε να εφαρμόσουμε το AssertionError στην Python. Εξηγήσαμε πολλά πλεονεκτήματα του AssertionError και πώς μπορούμε να τα αποφύγουμε. Στην τελευταία ενότητα αυτής της ανάρτησης, είδαμε πώς μπορούμε να χειριστούμε το AssertionError στην Python χρησιμοποιώντας το Try-Except Blocks, τη μονάδα ανίχνευσης και τη δήλωση εκτύπωσης.