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. HTML

    HTML DOM ColumnGroup ऑब्जेक्ट

    HTML DOM ColumnGroup ऑब्जेक्ट HTML तत्व से संबद्ध है। तत्व का उपयोग CSS शैलियों को एक विशिष्ट संख्या में स्तंभों या सभी स्तंभों पर लागू करने के लिए किया जाता है। यह हमें तालिका में मौजूद स्तंभों पर अधिक नियंत्रण देता है। गुण ColumnGroup संपत्ति निम्नलिखित है - संपत्ति विवरण अवधि स्तंभ समूह की

  1. CSS

    CSS का उपयोग करके मोबाइल ब्राउज़र पर पुल-टू-रिफ्रेश सुविधा को अक्षम करना

    हम CSS overscrollbehavior प्रॉपर्टी का उपयोग करके वेबपेज के सीमा क्षेत्र को स्क्रॉल करने के आउटपुट को बदल सकते हैं। इसके माध्यम से, हम ब्राउज़र पर पुल-टू-रिफ्रेश को अक्षम कर सकते हैं। CSS overscroll-behavior गुण का सिंटैक्स इस प्रकार है - Selector { overscroll-behavior: /*value*/ } उदाहरण निम्न

  1. Python

    Matplotlib में सभी मौजूदा आंकड़ों को फ्लश करना

    matplotlib में सभी मौजूदा आंकड़ों को फ्लश करने के लिए, close(all) . का उपयोग करें विधि। कदम फिगर साइज सेट करें और सबप्लॉट्स के बीच और आसपास पैडिंग को एडजस्ट करें। फर्स्ट फिगर शीर्षक के साथ एक आकृति बनाएं। दूसरा चित्र शीर्षक के साथ एक और आकृति बनाएं। सभी आंकड़े बंद करने के लिए, बंद करें(स