Python AssertionError

Python Assertionerror



כאשר תוכנית Python נתקלת במצב לא צפוי בזמן הפעלה, התוכנית עוצרת את הביצוע ומחזירה חריגה. ב-Python, חריגים ושגיאות תחביר הן שתי הקטגוריות העיקריות של שגיאות. כאשר חתיכת קוד של Python שתקפה מבחינה תחבירית יוצרת שגיאה, היא ידועה כהעלאת חריג/שגיאה. הודעת השגיאה בשורה האחרונה מגדירה את סוג החריג המדויק ומספקת תיאור כדי לסייע בניפוי באגים, וחץ מצביע על הקו או המיקום שבו התרחש החריג. תפיסה וניהול של חריגים חיוניים כדי למנוע קריסת תוכנית פתאומית. השתמש בדרך אחרת לביצוע הקוד. לדוגמה, כאשר החריג שצוין מתרחש. מדריך זה ידון ב-AssertionError וכיצד ניתן לפתור אותה ב-Python.

מהי AssertionError ב-Python?

שגיאות טענה הן מושג תכנות המתרחש כאשר מתכנת כותב או יוצר גוש קוד המשמש להכרזה על קריטריון או תנאי שיש להתקיים לפני הפעלת המודול. כמו כל שגיאת Python, השליטה מועברת לשורת הקוד העוקבת אם התנאי שצוין כאשר הטענה הוכרזה כאמתית. אם הוא שקר, לעומת זאת, מועלית שגיאה או חריגה, והתוכנית נעצרת. ניתן להשתמש בהצהרת ה-assert בשפות תכנות שונות עם התחביר הספציפי שלהן מכיוון שהיא בלתי תלויה בשפה. זוהי תת-מחלקה או מופע של המחלקה Exception. ל-Python AssertionError יש את התחביר הבא:

תחביר: assert condition, error_message(אופציונלי)







דוגמא

נזין גיל של אדם כקלט, ואם הוא קטן מאפס, הקונסולה תעלה שגיאת טענה.





עכשיו, מה אם נזין גיל קטן מ-0?





איתור באגים בקוד שלך בשיטה זו הוא פשוט יותר, ובכך מקל על איתור שגיאות ותיקון באגים בתוכנית.



כיצד AssertionError עובד ב-Python

שפת Python כוללת הצהרת assert שניתן להשתמש בה כדי ליצור פלטי הודעת שגיאה פשוטים עם קביעות לוגיות. כאשר הצהרת הטענה נכשלת, מועלית 'חריג' AssertionError. ב-Python, מחלקות החריג נגזרות ממחלקת BaseException. מחלקת BaseException, שהיא גם מחלקת הבסיס של מחלקת AssertionError, היא המקום ממנו נובעת המחלקה Exception. תמיד צריך להיות קוד טיפול חריג מתאים לטיפול בכשל של הצהרת assert בכל פעם שמשתמשים בה. מטפל החריגים המוגדר כברירת מחדל ב-Python ידפיס את הודעת השגיאה שנכתבה על ידי המתכנת, אך ניתן לטפל בשגיאה או לפתור אותה גם ללא הודעת שגיאה.

יישום AssertionError ב-Python

להלן מספר דוגמאות של AssertionError ב-Python:

דוגמא

בדוגמה זו, נכתוב תוכנית Python כדי להציג AssertionError בתוכנית שמוצאת את שטח המעגל.

ערך הרדיוס 'r' מועבר כקלט לפונקציה בתוכנית הקודמת שנוצרת כדי למצוא את שטח המעגל. לאחר מכן נעשה שימוש בהצהרת ה-assert כדי לקבוע אם הערך המסופק או הרדיוס 'r' מתחת לאפס, ואם יסופק לו ערך שלילי, יועלה חריג. שטח המעגל יוחזר על סמך ערך הרדיוס 'r' המסופק לפונקציה. ראשית, הפונקציה מבוצעת עם ערך של r כ-3. לאחר מכן הפונקציה מבוצעת עם הערך 2.5. ה-AssertionError מועלית כאשר אנו משתמשים בערך שלילי של 'r', כלומר, '-1'.

בוא ננסה דוגמה אחרת כדי להציג את התרחשות של שגיאת טענה.

דוגמא

בדוגמה זו, התוכנית תקבע אם ערך המכנה אינו אפס.

הודעת השגיאה של שגיאת הטענה מוצגת בתוכנית הקודמת. יצרנו שני משתנים (a ו-b), וערכים שלמים מציינים את המשתנים. המשתנה השני, כלומר, b נבדק לאחר מכן כדי לראות אם הוא אינו שווה ל-0 באמצעות הצהרת ה-assert. אם צוין אחרת, הודעת השגיאה תודפס. אם לא, התוצאה של חלוקת המספר הראשון בערך השני מוצגת. בתמונה הקודמת, הפלט של התוכנית מוצג.

יישומים של AssertionError

השימושים המועילים האחרים בשגיאת טענה כוללים:

  • טענה מסייעת בהערכת ערכי פרמטרים
  • קביעות מסייעות במעקב אחר סוג הקלט והאם הערך הזה תקף
  • בנוסף, הצהרות מסייעות בזיהוי אם מפתח קוד אחר עושה שימוש לרעה בממשק
  • הצהרות מסייעות במעקב רציף אחר תפוקת התוכנית

כיצד נוכל להימנע משגיאות הטענה ב-Python

  1. ניתן להשתמש בדגל -O בתוכנית Python כדי להשבית כל הצהרת טענה. חשוב לזכור שההצהרות שמגיעות אחרי הצהרת הצהרת הצהרת לא יבוצעו אם נשבית את הצהרות ההצהרה.
  2. משתנה הסביבה יכול גם להגדיר דגל כדי לבטל את הצהרות הטענה. כל התהליכים והיישומים המשתמשים או יורשים את הסביבה מושפעים במצב זה.
  3. ב-Python, הגישה הפשוטה ביותר למניעת שגיאות טענה היא לטפל בהן באופן ידני. אם נוודא שזרימת הבקרה של התוכנית מוסטת כך שהיא לא תיגש להצהרות ה-assert, אז אין סיכוי לשגיאות טענה.

טיפול ב-AsertionError

מלבד הצהרת הטענה, אנו יכולים גם לטפל בשגיאת הטענה באמצעות השיטות הבאות:

טיפול בשגיאת הטענה באמצעות ה-Try-Except בלוקים

הצהרת הטענה קובעת אם הערכים שווים. בלוק try מעלה את השגיאה AssertionError מכיוון שהמספרים השלמים הללו אינם שווים. פקודת ההדפסה מבוצעת לאחר שבלוק ה-except תפס את החריגה. כאן, הפלט של משפט ההדפסה מבלוק החריג מוצג. ניתן להשתמש במילת המפתח העלאה כדי להעלות מחדש את השגיאה בגוש ה-except כדי שנוכל לקבוע את מקור החריג. כאשר מתרחש חריג, מילת המפתח 'העלאה' תעלה שגיאה ותסיים את התוכנית. זה עוזר בשמירה או בשמירה על תיעוד/מעקב אחר החריג הקיים.

טיפול ב-AsertionError באמצעות מודול המעקב

כאשר הקוד מכיל מספר הצהרות טענה, מודול המעקב מסייע בזיהוי מקור השגיאה המדויק.

באמצעות מודול העקיבה, ניתן לכתוב את הצהרת ההדפסה שלנו עם מצייני מיקום {}.

בנוסף, אנו יכולים להגדיר משתנים אחרים לאחסון מיקום השורה, שם הקובץ, שם השיטה, כמו גם הטקסט/הודעה שבה התרחש החריג.

אובייקט העקיבה מכונה 'tb'. אנו משתמשים בשני מצייני מיקום: אחד עבור הטקסט ואחד עבור מיקום השורה בהצהרת ההדפסה.

שלושת המרכיבים של הצהרה 'raise' — exc_type, exc_traceback ו-ex_value — מוחזרים על ידי הפונקציה sys.exc_info()‎.

טיפול ב-AsertionError באמצעות הצהרת ההדפסה

כדי לטפל באופן ידני בחריג, נוכל להשתמש בהצהרה 'הדפס' בתוך בלוק הפרט.

הצהרת ההדפסה מדפיסה כל הודעת שגיאה שהמשתמש מזין. בשיטה זו, שגיאה טכנית לא תהיה דאגה עבור המשתמש.

במקום שגיאה, מוצגת הודעה קצרה.

סיכום

בפוסט זה ראינו לראשונה את ההקדמה של חריגים ב- Python. דנו ב-AssertionError, כיצד זה עובד וכיצד אנו יכולים ליישם AssertionError ב-Python. הסברנו כמה יתרונות של AssertionError וכיצד נוכל להימנע מהם. בחלק האחרון של פוסט זה ראינו כיצד אנו יכולים לטפל ב-AssertionError ב-Python באמצעות ה-Try-Except Blocks, מודול העקיבה והצהרת ההדפסה.