पाठ 37 / 47

व्यावहारिक डेकोरेटर

आम असल-दुनिया उपयोग: टाइमिंग, लॉगिंग, और आर्ग्युमेंट लेने वाले डेकोरेटर।

फ़ंक्शन का समय मापना

एक टाइमिंग डेकोरेटर मापता है कि फ़ंक्शन को कितना समय लगा — धीमे कोड को बिना उसका मुख्य भाग छुए पहचानने के लिए उपयोगी।

import time

def timed(func):
    def wrapper(*args, **kwargs):
        start = time.perf_counter()
        result = func(*args, **kwargs)
        elapsed = time.perf_counter() - start
        print(f"{func.__name__} took {elapsed:.4f}s")
        return result
    return wrapper

@timed
def slow_add(a, b):
    time.sleep(0.1)
    return a + b

slow_add(2, 3)

आर्ग्युमेंट वाले डेकोरेटर

डेकोरेटर को अपने खुद के आर्ग्युमेंट लेने योग्य बनाने के लिए (जैसे @retry(times=3)), उसे एक और बाहरी फ़ंक्शन परत में लपेटें।