การตรวจสอบความถูกต้องใน Python โดยใช้ Metaprogramming และ Decorator- Advanced Python

มัณฑนากรเป็นชนิดพิเศษของการประกาศที่สามารถนำไปใช้กับฟังก์ชั่นเพื่อเพิ่มประสิทธิภาพการทำงานของมัน นี้เรียกว่ายังเป็นที่รู้จักmetaprogramming ที่นี่เรากำลังพยายามแก้ไขฟังก์ชันการทำงานของฟังก์ชันบนcompile tim e Metaprogramming เป็นแนวคิดที่ยอดเยี่ยมในภาษาโปรแกรมมด สามารถใช้เพื่อตรวจสอบบางอย่างก่อนเรียกใช้ฟังก์ชันจริง ลองทำความเข้าใจกรณีการใช้งานด้วยตัวอย่างกัน

Author : ดุกสัน

สมมุติว่าเรามีฟังก์ชันหารซึ่งรับทั้งตัวเศษและตัวส่วน ตัวเศษและตัวส่วนในที่นี้ควรเป็นจำนวนจริง และตัวส่วนไม่สามารถเป็นศูนย์ได้ มาใช้งานฟังก์ชั่นกัน

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

คุณควรจะรุ้

ก่อนดำเนินการต่อ มีแนวคิดบางประการที่คุณควรรู้ แนวคิดเหล่านี้จะช่วยให้เข้าใจนักตกแต่ง

  1. ทุกสิ่งคือวัตถุ
  2. คลาสเรียกได้

เรายังสามารถส่งฟังก์ชันเป็นอาร์กิวเมนต์และใช้ฟังก์ชันนั้นได้

เราสามารถคืนค่าฟังก์ชันจากฟังก์ชันได้

Class is callable:คุณสามารถสร้าง class callable object โดยการเพิ่มฟังก์ชัน วัตถุที่เรียกได้เป็นวัตถุ แต่สามารถเรียกว่าฟังก์ชันได้ เมื่อเรารันหรือเรียกวัตถุที่เรียกได้ มันจะเรียกเมธอดภายในdef __call__(self, *args, **kwargs)__call__

ตอนนี้เมื่อเรารู้แนวคิดพื้นฐานแล้ว เรามาลองทำความเข้าใจกับมัณฑนากรกัน

มัณฑนากรใช้ฟังก์ชั่น

ฟังก์ชันมัณฑนากรเป็นฟังก์ชันอาร์กิวเมนต์เดียว ใช้ฟังก์ชันเป็นอาร์กิวเมนต์และส่งกลับฟังก์ชันตัวช่วย

ดังที่คุณเห็นในตัวอย่างข้างต้นฟังก์ชันมัณฑนากรใช้funcเป็นฟังก์ชันและเพิ่มคำสั่ง before/after มัณฑนากรฟังก์ชันการทำงานที่สามารถดำเนินการได้โดยใช้@decoratorการแสดงออก

นอกจากนี้คุณยังสามารถกลับมาฟังก์ชั่นที่ยอมรับvarargs เป็นอาร์กิวเมนต์ สิ่งนี้มีประโยชน์มากในการแทนที่ลักษณะการทำงานของฟังก์ชันที่ยังคงให้ความยืดหยุ่นอย่างเต็มที่

นักตกแต่งโดยใช้คลาส

เช่นเดียวกับนักตกแต่งฟังก์ชัน คุณสามารถสร้างเครื่องตกแต่งวัตถุที่เรียกได้ ข้อได้เปรียบที่ใหญ่ที่สุดของการสร้างมัณฑนากรตามคลาสคือมันดูเปิดเผยและสะอาดกว่าเมื่อเปรียบเทียบกับมัณฑนากรที่ใช้งานได้

เพื่อให้เข้าใจแนวคิดนี้ ลองมาดูตัวอย่างก่อนหน้าของฟังก์ชันบวกและหาร หากคุณสังเกตว่าทั้งสองทำหน้าที่เป็นการตรวจสอบจำนวนจริงร่วมกัน เราสามารถสร้างคลาสมัณฑนากรตรวจสอบทั่วไปได้

ตอนนี้เรามีตัวตรวจสอบอาร์กิวเมนต์สองตัว ลองใช้สิ่งนี้กับฟังก์ชั่นจริง

ถ้าดูจากฟังก์ชันแล้ว จะดูสะอาดตากว่ารุ่นก่อนมาก

บทสรุป

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

ข้อมูลอ้างอิง:

https://python-course.eu/advanced-python/decorators-decoration.php

Suggested posts

การค้นหาข้อมูลเกี่ยวกับชื่อโดเมน

ตัดตอนมาจาก Small, Sharp Software Tools โดย Brian P. Hogan

การค้นหาข้อมูลเกี่ยวกับชื่อโดเมน

เมื่อคุณส่งคำขอไปที่ facebook.com คอมพิวเตอร์ของคุณจะค้นหาชื่อโดเมนเพื่อแปลชื่อโดเมนนั้นเป็นที่อยู่ IP เพื่อให้คอมพิวเตอร์ของคุณสามารถเชื่อมต่อได้

วิธีเรียกใช้ปลั๊กอิน ChatGPT ฟรีโดยใช้ Langchain

วิธีเรียกใช้ปลั๊กอิน ChatGPT ฟรีโดยใช้ Langchain

คุณต้องเคยได้ยินเกี่ยวกับปลั๊กอิน ChatGPT อันทรงพลังใหม่ทั้งหมด เช่น เบราว์เซอร์ ตัวแปลรหัส ฯลฯ แต่มีปัญหา การเข้าถึงปลั๊กอินถูกจำกัดไว้เฉพาะรายการรอ และหลายคนไม่สามารถเข้าถึงได้

Related posts

การพังทลายอย่างช้าๆ: เปิดเผยวิธีที่ผู้คนสูญเสียไปในอาชีพของพวกเขา

การพังทลายอย่างช้าๆ: เปิดเผยวิธีที่ผู้คนสูญเสียไปในอาชีพของพวกเขา

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

เงินทุนกำจัดคาร์บอนในปีงบประมาณ 24

รายละเอียดคำขอจัดสรรของ Carbon180 ข้ามเส้นทาง

เงินทุนกำจัดคาร์บอนในปีงบประมาณ 24

โดย Alyson Lee ที่ปรึกษาด้านการจัดการภาครัฐ กระบวนการจัดสรรประจำปีของรัฐบาลกลางเป็นหัวใจสำคัญของความพยายามของเราในการให้ทุนสนับสนุนการกำจัดก๊าซคาร์บอนไดออกไซด์ (CDR) ในแต่ละปี Carbon180 จะส่งคำขอไปยังสำนักงานรัฐสภาหลายแห่งเพื่อช่วยชี้แนะว่าเงินดอลลาร์ในปีหน้าจะไหลไปที่ใด

หนังสือเด็กเล่มแรกของการสูง

หนังสือเด็กเล่มแรกของการสูง

(คำเตือน- นี่คือการเสียดสี ตั้งใจที่จะทำลายล้างอย่างสนุกสนาน- ไม่เหมาะสำหรับเด็กอย่างแน่นอน) คุณเคยเห็นพ่อกับแม่ของคุณซ่อนตัวอยู่ในครัวและสูบบุหรี่ที่มีกลิ่นเหม็นเหล่านั้น พวกเขาบอกคุณ

ทำไมฟรีแลนซ์บางคนแกล้งทำชีวิตของพวกเขา

ทำไมฟรีแลนซ์บางคนแกล้งทำชีวิตของพวกเขา

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