Computer >> कंप्यूटर >  >> प्रोग्रामिंग >> Python

पायथन में फंक्शन डेकोरेटर?

पायथन डेवलपर्स डेकोरेटर्स का उपयोग करके कॉल करने योग्य स्वयं को स्थायी रूप से संशोधित किए बिना कॉल करने योग्य कार्यों, विधियों या कक्षाओं के व्यवहार को बढ़ा और संशोधित कर सकते हैं। संक्षेप में हम कह सकते हैं कि वे कॉल करने योग्य वस्तुएं हैं जिनका उपयोग कार्यों या कक्षाओं को संशोधित करने के लिए किया जाता है।

फंक्शन डेकोरेटर ऐसे फंक्शन होते हैं जो फंक्शन रेफरेंस को तर्कों के रूप में स्वीकार करते हैं और उनके चारों ओर एक रैपर जोड़ते हैं और रैपर के साथ फंक्शन को एक नए फंक्शन के रूप में लौटाते हैं।

आइए एक उदाहरण से फंक्शन डेकोरेटर को समझते हैं:

कोड1

@decoratordef func(arg):रिटर्न "वैल्यू"

उपरोक्त कोड समान है:

कोड2

def func(arg):रिटर्न "वैल्यू" func =डेकोरेटर (func)

तो ऊपर से, हम देख सकते हैं कि एक डेकोरेटर बस एक और फ़ंक्शन है जो एक फ़ंक्शन को एक तर्क के रूप में लेता है और एक देता है।

डेकोरेटर मूल रूप से किसी अन्य फ़ंक्शन को "सजावट" या "रैप" करते हैं और आपको नीचे दिए गए उदाहरण में बताए अनुसार लिपटे फ़ंक्शन के चलने से पहले और बाद में कोड निष्पादित करने देते हैं:

def our_decorator(func):def function_wrapper(x):प्रिंट ("कॉल करने से पहले" + func.__name__) func(x) प्रिंट ("कॉल करने के बाद" + func.__name__) रिटर्न function_wrapperdef foo(x):प्रिंट ( "हाय, फू को "+ str(x)) प्रिंट ("हम सजावट से पहले फू कहते हैं:") फू ("हाय") प्रिंट ("अब हम फू को एफ के साथ सजाते हैं:") फू =हमारे_डेकोरेटर (फू) के साथ बुलाया गया है। प्रिंट ("हम सजावट के बाद फू कहते हैं:") फू (90)

आउटपुट

हम डेकोरेशन से पहले foo को कॉल करते हैं:Hi, foo को Hi के साथ कॉल किया गया है, अब हम foo को f से सजाते हैं:हम डेकोरेशन के बाद foo को कॉल करते हैं:fooHi को कॉल करने से पहले, foo को 90 के साथ कॉल किया जाता है। foo को कॉल करने के बाद

यदि आपको लगता है कि ऊपर थोड़ा जटिल है, तो सबसे सरल संभव डेकोरेटर लिखें:

def null_decorator(func):रिटर्न func

ऊपर null_decorator एक कॉल करने योग्य (फ़ंक्शन) है, यह अपने इनपुट के रूप में एक और कॉल करने योग्य लेता है और यह उसी इनपुट को कॉल करने योग्य बिना इसे संशोधित किए देता है।

आइए किसी अन्य फ़ंक्शन को सजाकर (या लपेटकर) हमारे उपरोक्त सरलतम डेकोरेटर का विस्तार करें।

def null_decorator(func):रिटर्न funcdef ग्रीटिंग ():रिटर्न "हैलो, पायथन!" ग्रीट =नल_डेकोरेटर (ग्रीट)>>> ग्रीट ()'हैलो, पायथन!' 

ऊपर हमने एक ग्रीट फंक्शन को परिभाषित किया है और फिर इसे नल_डेकोरेटर फंक्शन के माध्यम से चलाकर तुरंत सजाया है।

अजगर सजावटी कार्यक्रम के ऊपर लिखने का बहुत आसान तरीका है (बजाय स्पष्ट रूप से null_decorator को अभिवादन पर कॉल करना और फिर अभिवादन चर को पुन:असाइन करना) एक चरण में फ़ंक्शन को सजाने के लिए अजगर @syntax का उपयोग करना है:

@null_decoratordef ग्रीटिंग ():रिटर्न "हैलो, पायथन!">>> ग्रीट ()'हैलो, पायथन!'

  1. पायथन टिंकर में बाइंडिंग फ़ंक्शन

    पायथन में टिंकर एक जीयूआई पुस्तकालय है जिसका उपयोग विभिन्न जीयूआई प्रोग्रामिंग के लिए किया जा सकता है। ऐसे एप्लिकेशन डेस्कटॉप एप्लिकेशन बनाने के लिए उपयोगी होते हैं। इस लेख में हम GUI प्रोग्रामिंग के एक पहलू को देखेंगे जिसे बाइंडिंग फंक्शन कहा जाता है। यह घटनाओं को कार्यों और विधियों के लिए बाध्य कर

  1. issubset () पायथन में फ़ंक्शन

    इस लेख में, हम पायथन स्टैंडर्ड लाइब्रेरी में उपलब्ध issubset () फ़ंक्शन के कार्यान्वयन और उपयोग के बारे में जानेंगे। issubset() विधि बूलियन ट्रू लौटाती है जब एक सेट के सभी तत्व दूसरे सेट में मौजूद होते हैं (एक तर्क के रूप में पारित) अन्यथा, यह बूलियन गलत देता है। नीचे दिए गए चित्र में B, A का एक उ

  1. इंटरसेक्शन () फ़ंक्शन पायथन

    इस लेख में, हम चौराहे () फ़ंक्शन के बारे में जानेंगे जो किसी दिए गए सेट पर किया जा सकता है। गणित के अनुसार प्रतिच्छेदन का अर्थ है दो समुच्चयों से उभयनिष्ठ तत्वों का पता लगाना। सिंटैक्स <set name>.intersection(<set a1> <set a2> ……..) रिटर्न वैल्यू सेट में सामान्य त