Python AssertionError

Python Assertionerror



เมื่อโปรแกรม Python พบเงื่อนไขที่ไม่คาดคิดขณะทำงาน โปรแกรมจะหยุดการทำงานและส่งคืนข้อยกเว้น ใน Python ข้อยกเว้นและข้อผิดพลาดทางไวยากรณ์เป็นข้อผิดพลาด 2 หมวดหมู่หลัก เมื่อโค้ด Python ที่ใช้งานได้จริงสร้างข้อผิดพลาด เรียกว่าเป็นการเพิ่มข้อยกเว้น/ข้อผิดพลาด ข้อความแสดงข้อผิดพลาดในบรรทัดสุดท้ายจะกำหนดประเภทของข้อยกเว้นที่แม่นยำและให้คำอธิบายเพื่อช่วยในการแก้ไขข้อบกพร่อง และลูกศรชี้ไปที่บรรทัดหรือตำแหน่งที่เกิดข้อยกเว้น การจับและจัดการข้อยกเว้นเป็นสิ่งสำคัญในการหลีกเลี่ยงโปรแกรมหยุดทำงานกะทันหัน ใช้วิธีอื่นในการรันโค้ด ตัวอย่างเช่น เมื่อเกิดข้อยกเว้นที่ระบุ บทช่วยสอนนี้จะกล่าวถึง AssertionError และวิธีแก้ไขใน Python

AssertionError ใน Python คืออะไร?

ข้อผิดพลาดในการยืนยันเป็นแนวคิดการเขียนโปรแกรมที่เกิดขึ้นเมื่อโปรแกรมเมอร์เขียนหรือสร้างบล็อกของโค้ดที่ใช้ประกาศเกณฑ์หรือเงื่อนไขเพื่อให้เป็นไปตามข้อกำหนดก่อนเรียกใช้โมดูล เช่นเดียวกับข้อผิดพลาด Python การควบคุมจะถูกโอนไปยังบรรทัดถัดไปของรหัสหากเงื่อนไขที่ระบุเมื่อการยืนยันถูกประกาศเป็นจริง หากเป็นเท็จ จะเกิดข้อผิดพลาดหรือข้อยกเว้นขึ้นและโปรแกรมจะหยุดทำงาน คำสั่งยืนยันสามารถใช้ในภาษาการเขียนโปรแกรมต่างๆ ที่มีรูปแบบเฉพาะ เนื่องจากไม่ขึ้นกับภาษา เป็นคลาสย่อยหรืออินสแตนซ์ของคลาสข้อยกเว้น Python AssertionError มีไวยากรณ์ต่อไปนี้:

ไวยากรณ์: ยืนยันเงื่อนไข error_message (ตัวเลือก)







ตัวอย่าง

เราจะป้อนอายุของบุคคลเป็นข้อมูลที่ป้อน และหากน้อยกว่าศูนย์ คอนโซลจะแจ้งข้อผิดพลาดในการยืนยัน





ทีนี้ จะเกิดอะไรขึ้นถ้าเราเข้าสู่อายุที่น้อยกว่า 0?





การดีบักโค้ดโดยใช้วิธีนี้ง่ายกว่า ทำให้ค้นหาข้อผิดพลาดและแก้ไขข้อบกพร่องในโปรแกรมได้ง่ายขึ้น



AssertionError ทำงานอย่างไรใน Python

ภาษา Python มีคำสั่ง assert ที่สามารถใช้สร้างเอาต์พุตข้อความแสดงข้อผิดพลาดอย่างง่ายพร้อมการยืนยันแบบลอจิคัล เมื่อคำสั่งยืนยันล้มเหลว จะมีการแสดง 'ข้อยกเว้น' AssertionError ใน Python คลาสข้อยกเว้นจะได้มาจากคลาส BaseException คลาส BaseException ซึ่งเป็นคลาสพื้นฐานของคลาส AssertionError เป็นที่ที่คลาส Exception เกิดขึ้น ควรมีโค้ดจัดการข้อยกเว้นที่เหมาะสมเสมอเพื่อจัดการกับความล้มเหลวของคำสั่งยืนยันทุกครั้งที่มีการใช้ ตัวจัดการข้อยกเว้นเริ่มต้นใน Python จะพิมพ์ข้อความแสดงข้อผิดพลาดที่เขียนโดยโปรแกรมเมอร์ แต่สามารถจัดการหรือแก้ไขข้อผิดพลาดนั้นได้โดยไม่มีข้อความแสดงข้อผิดพลาด

การใช้ AssertionError ใน Python

ต่อไปนี้คือตัวอย่างต่างๆ ของ AssertionError ใน Python:

ตัวอย่าง

ในตัวอย่างนี้ เราจะเขียนโปรแกรม Python เพื่อแสดง AssertionError ในโปรแกรมที่หาพื้นที่ของวงกลม

ค่ารัศมี “r” จะถูกส่งต่อเป็นอินพุตไปยังฟังก์ชันในโปรแกรมก่อนหน้าซึ่งสร้างขึ้นเพื่อค้นหาพื้นที่ของวงกลม คำสั่งยืนยันจะใช้เพื่อกำหนดว่าค่าที่ให้มาหรือรัศมี 'r' นั้นต่ำกว่าศูนย์หรือไม่ และหากมีการระบุค่าลบ ข้อยกเว้นจะเพิ่มขึ้น พื้นที่ของวงกลมจะถูกส่งกลับตามค่ารัศมี 'r' ที่ให้กับฟังก์ชัน ขั้นแรก ฟังก์ชันจะดำเนินการด้วยค่า r เป็น 3 จากนั้นฟังก์ชันจะดำเนินการด้วยค่า 2.5 AssertionError เกิดขึ้นเมื่อเราใช้ค่าลบของ “r” เช่น “-1”

มาลองอีกตัวอย่างหนึ่งเพื่อแสดงการเกิดขึ้นของข้อผิดพลาดการยืนยัน

ตัวอย่าง

ในตัวอย่างนี้ โปรแกรมจะกำหนดว่าค่าตัวส่วนไม่ใช่ศูนย์หรือไม่

ข้อความแสดงข้อผิดพลาดของการยืนยันข้อผิดพลาดจะแสดงในโปรแกรมก่อนหน้า เราได้สร้างตัวแปรสองตัว (a และ b) และค่าจำนวนเต็มจะระบุตัวแปร จากนั้นตัวแปรที่ 2 คือ b ได้รับการทดสอบเพื่อดูว่าไม่เท่ากับ 0 โดยใช้คำสั่ง assert หรือไม่ ระบุเป็นอย่างอื่น ข้อความแสดงข้อผิดพลาดจะถูกพิมพ์ ถ้าไม่เช่นนั้น ผลลัพธ์ของการหารตัวเลขแรกด้วยค่าที่สองจะแสดงขึ้น ในภาพก่อนหน้า ผลลัพธ์ของโปรแกรมจะแสดงขึ้น

แอปพลิเคชันของ AssertionError

การใช้ข้อผิดพลาดในการยืนยันที่เป็นประโยชน์อื่นๆ ได้แก่:

  • การยืนยันช่วยในการประเมินค่าพารามิเตอร์
  • การยืนยันช่วยตรวจสอบประเภทอินพุตและดูว่าค่านั้นถูกต้องหรือไม่
  • นอกจากนี้ การยืนยันยังช่วยในการระบุว่านักพัฒนาโค้ดรายอื่นใช้อินเทอร์เฟซในทางที่ผิดหรือไม่
  • การยืนยันช่วยในการตรวจสอบผลลัพธ์ของโปรแกรมอย่างต่อเนื่อง

เราจะหลีกเลี่ยงข้อผิดพลาดยืนยันใน Python ได้อย่างไร

  1. แฟล็ก -O ในโปรแกรม Python สามารถใช้เพื่อปิดใช้งานทุกคำสั่งยืนยัน โปรดทราบว่าข้อความที่มาหลังจากข้อความยืนยันจะไม่ถูกดำเนินการหากเราปิดใช้ข้อความยืนยัน
  2. ตัวแปรสภาพแวดล้อมยังสามารถตั้งค่าสถานะเพื่อปิดคำสั่งยืนยัน กระบวนการและแอปพลิเคชันทั้งหมดที่ใช้หรือสืบทอดสภาพแวดล้อมจะได้รับผลกระทบในสถานการณ์นี้
  3. ใน Python วิธีที่ง่ายที่สุดในการป้องกันข้อผิดพลาดในการยืนยันคือการจัดการด้วยตนเอง หากเราตรวจสอบให้แน่ใจว่าโฟลว์การควบคุมของโปรแกรมถูกเปลี่ยนเส้นทางเพื่อไม่ให้เข้าถึงคำสั่งยืนยัน จะไม่มีโอกาสเกิดข้อผิดพลาดในการยืนยัน

การจัดการ AssertionError

นอกจากคำสั่งยืนยันแล้ว เรายังสามารถจัดการกับข้อผิดพลาดในการยืนยันโดยใช้วิธีการต่อไปนี้:

การจัดการข้อผิดพลาดในการยืนยันโดยใช้ Try-Except Blocks

คำสั่งยืนยันจะกำหนดว่าค่าเท่ากันหรือไม่ บล็อกการลองทำให้เกิดข้อผิดพลาด AssertionError เนื่องจากจำนวนเต็มเหล่านี้ไม่เท่ากัน คำสั่งพิมพ์จะดำเนินการหลังจากที่บล็อกยกเว้นตรวจพบข้อยกเว้น ที่นี่ ผลลัพธ์ของคำสั่งพิมพ์จากบล็อกข้อยกเว้นจะปรากฏขึ้น คีย์เวิร์ดเพิ่มสามารถใช้เพื่อเพิ่มข้อผิดพลาดอีกครั้งในบล็อกยกเว้น เพื่อให้เราระบุแหล่งที่มาของข้อยกเว้นได้ เมื่อมีข้อยกเว้น คีย์เวิร์ด 'raise' จะทำให้เกิดข้อผิดพลาดและสิ้นสุดโปรแกรม ช่วยในการรักษาหรือเก็บบันทึก/ติดตามข้อยกเว้นที่มีอยู่

การจัดการ AssertionError โดยใช้โมดูลการสืบค้นกลับ

เมื่อโค้ดประกอบด้วยคำสั่งยืนยันหลายรายการ โมดูล traceback จะช่วยในการระบุแหล่งที่มาของข้อผิดพลาดที่แน่นอน

การใช้โมดูล traceback คำสั่งการพิมพ์ของเราสามารถเขียนด้วยตัวยึดตำแหน่ง {}

นอกจากนี้ เรายังกำหนดตัวแปรอื่นๆ เพื่อเก็บตำแหน่งบรรทัด ชื่อไฟล์ ชื่อของเมธอด ตลอดจนข้อความ/ข้อความที่เกิดข้อยกเว้นได้

ออบเจ็กต์การสืบค้นกลับเรียกว่า 'tb' เราใช้ตัวยึดตำแหน่งสองตัว: ตัวหนึ่งสำหรับข้อความและอีกตัวสำหรับตำแหน่งของบรรทัดในคำสั่งการพิมพ์

คอมโพเนนต์สามส่วนของคำสั่ง 'raise' — exc_type, exc_traceback และ exc_value — ส่งคืนโดยฟังก์ชัน sys.exc_info()

การจัดการ AssertionError โดยใช้การพิมพ์คำสั่ง

ในการจัดการข้อยกเว้นด้วยตนเอง เราสามารถใช้คำสั่ง 'พิมพ์' ภายในบล็อกยกเว้นได้

คำสั่งพิมพ์จะพิมพ์ข้อความแสดงข้อผิดพลาดที่ผู้ใช้ป้อน ด้วยวิธีนี้ ผู้ใช้จะไม่กังวลกับข้อผิดพลาดทางเทคนิค

แทนที่จะเป็นข้อผิดพลาด ข้อความสั้นๆ จะปรากฏขึ้น

บทสรุป

ในโพสต์นี้ เราเห็นการแนะนำข้อยกเว้นใน Python เป็นครั้งแรก เราได้หารือเกี่ยวกับ AssertionError วิธีการทำงาน และวิธีที่เราสามารถปรับใช้ AssertionError ใน Python เราได้อธิบายข้อดีหลายประการของ AssertionError และวิธีที่เราจะหลีกเลี่ยงได้ ในส่วนสุดท้ายของโพสต์นี้ เราได้เห็นวิธีที่เราสามารถจัดการ AssertionError ใน Python โดยใช้ Try-Except Blocks, โมดูลการสืบค้นกลับ และคำสั่งการพิมพ์