10 Python Decorators to Take Your Code to the Next Level

14-Jun-23

คัมภีร์เทพ IT

See the original english version Click here!

 

Python Decorator เป็น Tool ที่ทรงพลังที่สามารถช่วยให้เราเขียน Code ที่ Clean และมีประสิทธิภาพมากขึ้น อีกทั้งช่วยให้คุณสามารถเพิ่มฟังก์ชั่นการทำงานให้กับ Functions หรือ Classes ที่มีอยู่โดยไม่ต้องแก้ไข Source Code โดยตรง วันนี้เรารู้จัก 10 Python Decorators ที่จะช่วยยกระดับ Code ของคุณไปอีกขั้น

1. @staticmethod

@staticmethod Decorator มักจะถูกใช้งานเพื่อกำหนด Static Method ภายใน Class โดย Static Method นั้น ก็มีความคล้ายกับ Function ปกติ เพียงแต่มันเป็นของ Class แทนที่จะเป็นของ Instance มันสามารถถูกเรียกใช้ ได้โดยที่ไม่ต้องเอา Class มาสร้างเป็น Object 

2. @lru_cache

@lru_cache Decorator มักถูกใช้เพื่อ Cache ผลลัพธ์ของการเรียกใช้ Function เพื่อการเข้าถึงในอนาคต มันใช้ Least-Recently-Used Cache Algorithm เพื่อเป็นการจำกัดขนาดของ Cache และลบผลลัพธ์ที่ถูกใช้น้อยที่สุดออกไปก่อนเมื่อ Cache เต็ม สิ่งนี้มีประโยชน์สำหรับการคำนวณที่ต้องใช้ Resource หรือมีหลาย Steps ซึ่งถูกเรียกใช้อยู่บ่อยครั้ง คุณสามารถ Import มันได้จาก functools

3. @debug

@debug Decorator จะถูกใช้เพื่อ Print ข้อมูลการ Debug เกี่ยวกับ Function Call รวมถึง Arguments และ Return Value ด้วย สิ่งนี้มีประโยชน์สำหรับการ Debug Function ที่มีความซับซ้อนหรือการค้นหา Performance Bottlenecks

4. @property

@property Decorator ถูกใช้เพื่อกำหนด Read-Only Property ภายใน Class โดย Property จะช่วยให้คุณสามารถกำหนด Attributes ที่สามารถถูกเข้าถึงได้เหมือน Attributes ทั่วไป แต่ค่าของพวกมันจะถูกคำนวณแบบ Dynamic แทนที่จะเก็บไว้ใน Memory

5. @register

หาก Python Script ของคุณหยุดทำงานโดยไม่ตั้งใจ และคุณยังต้องการทำงานบางอย่างเพื่อ Save งานของคุณ, ดำเนินการ Cleanup หรือ Print ข้อความ แล้วละก็ @register Decorator จะช่วยให้คุณทำสิ่งเหล่านี้ได้อย่างสะดวกขึ้น

6. @wraps

@wraps Decorator ถูกใช้เพื่อรักษา Metadata ของ Function หรือ Method หลังจากที่ได้รับการ Decorate แล้ว สิ่งนี้มีประโยชน์สำหรับจุดประสงค์ เช่น การแก้ข้อผิดพลาด, การตรวจทบทวน และการจัดทำเอกสาร

7. @getter

@getter Decorator จะถูกใช้เพื่อกำหนด Property Getter ภายใน Class โดยเจ้า Getters จะช่วยให้คุณเข้าถึงค่าของ Property ได้โดยไม่ต้องใช้วงเล็บ () 

8. @setter

@setter Decorator จะถูกใช้เพื่อกำหนด Property Setter ภายใน Class โดยเจ้า Setter จะช่วยให้คุณสามารถแก้ไขค่าของ Property โดยใช้ Assignment Operator (=)

9. @timeit

@timeit Decorator ถูกใช้เพื่อวัด Execution Time ของ Function และ Print มันไปยัง Console สิ่งนี้มีประโยชน์สำหรับการทำ Profiling สำหรับ Code ของคุณและค้นหา Performance Bottlenecks

10. @contextmanager

@contextmanager Decorator จะถูกใช้เพื่อกำหนด Function ที่สามารถถูกใช้เป็น Context Manager ด้วย With Statement สิ่งนี้มีประโยชน์สำหรับการรับและปล่อย Resources โดยอัตโนมัติ เช่น File Handles หรือ Locks

ที่มาhttps://python.plainenglish.io/

 

 

รับตำแหน่งงานไอทีใหม่ๆ ด้วยบริการ IT Job Alert

 

อัพเดทบทความจากคนวงในสายไอทีทาง LINE ก่อนใคร
อย่าลืมแอดไลน์ @techstarth เป็นเพื่อนนะคะ

เพิ่มเพื่อน

 

บทความล่าสุด