पाठ 36 / 47
डेकोरेटर की मूल बातें
एक फ़ंक्शन जो किसी दूसरे फ़ंक्शन को लपेटकर व्यवहार जोड़ता है, बिना उसका कोड बदले।
@decorator सिंटैक्स
डेकोरेटर एक फ़ंक्शन लेता है और एक नया लपेटा हुआ फ़ंक्शन लौटाता है। def के ऊपर @decorator, func = decorator(func) का संक्षिप्त रूप है।
def shout(func):
def wrapper(*args, **kwargs):
result = func(*args, **kwargs)
return result.upper()
return wrapper
@shout
def greet(name):
return f"hello, {name}"
print(greet("ada")) # HELLO, ADAबदलना नहीं, लपेटना
डेकोरेटर गिफ्ट रैपिंग जैसा है — अंदर का फ़ंक्शन वही रहता है, पर अब उसके चारों ओर अतिरिक्त व्यवहार आ जाता है।