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

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


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

फंक्शन डेकोरेटर्स कैसे काम करते हैं?

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

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

कोड 1

@decorator
def func(arg):
    return "value"

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

कोड 2

def func(arg):
    return "value"
func = decorator(func)

ऊपर से हम देख सकते हैं कि एक डेकोरेटर बस एक अन्य फंक्शन है जो एक फंक्शन को आर्गुमेंट के रूप में लेता है और एक लौटाता है।

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

def our_decorator(func):
    def function_wrapper(x):
        print("Before calling " + func.__name__)
        func(x)
        print("After calling " + func.__name__)
    return function_wrapper

def foo(x):
    print("Hi, foo has been called with " + str(x))

print("We call foo before decoration:")
foo("Hi")
print("We now decorate foo with f:")
foo = our_decorator(foo)
print("We call foo after decoration:")
foo(90)

आउटपुट

We call foo before decoration:
Hi, foo has been called with Hi
We now decorate foo with f:
We call foo after decoration:
Before calling foo
Hi, foo has been called with 90
After calling foo

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

def null_decorator(func):
    return func

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

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

def null_decorator(func):
    return func

def greet():
    return "Hello, Python!"

greet = null_decorator(greet)
>>> greet()
'Hello, Python!'

उपरोक्त हमने एक greet फंक्शन परिभाषित किया और फिर तुरंत इसे null_decorator फंक्शन के माध्यम से चलाकर डेकोरेट किया।

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

@null_decorator
def greet():
    return "Hello, Python!"

>>> greet()
'Hello, Python!'

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

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

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

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

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

    इस लेख में, हम intersection() फ़ंक्शन के बारे में सीखेंगे जिसे किसी भी दिए गए सेट पर किया जा सकता है। गणित के अनुसार, intersection का अर्थ दो सेट्स से सामान्य तत्वों को ढूंढना है। सिंटैक्स .intersection( ...) वापसी मान तर्क के रूप में पास किए गए सेट्स में सामान्य तत्व। उदाहरण set_1 = {t,u,t,o