किसी फंक्शन को रैप करने का सबसे सरल तरीका
func(*args, **kwargs)
... मैन्युअल रूप से एक आवरण लिखने के लिए है जो स्वयं के अंदर func () कहेगा :
def wrapper(*args, **kwargs):
# do something before
try:
return func(*a, **kwargs)
finally:
# do something after
पायथन फ़ंक्शन में एक ऑब्जेक्ट है, इसलिए आप इसे किसी अन्य फ़ंक्शन के तर्क के रूप में नाम दे सकते हैं और इसे वापस कर सकते हैं। आप किसी भी फ़ंक्शन के लिए एक रैपर जनरेटर भी लिख सकते हैं () :
def wrapperGenerator(anyFunc, *args, **kwargs):
def wrapper(*args, **kwargs):
try:
# do something before
return anyFunc(*args, **kwargs)
finally:
#do something after
return wrapper
कृपया यह भी ध्यान दें कि जब आप किसी फ़ंक्शन के सभी तर्कों का नाम नहीं जानते हैं या नहीं जानना चाहते हैं, तो आप तर्कों का उल्लेख कर सकते हैं, जिसे इसके नाम से दर्शाया गया है, जो कि अभिभावकों में तारांकन से पहले है। फ़ंक्शन का नाम:
*args
उदाहरण के लिए आप एक फ़ंक्शन को परिभाषित कर सकते हैं जो किसी भी तर्क को ले जाएगा:
def testFunc(*args):
print args # prints the tuple of arguments
पायथन फ़ंक्शन तर्कों पर और भी हेरफेर करने के लिए प्रदान करता है। आप किसी फ़ंक्शन को कीवर्ड तर्क लेने की अनुमति दे सकते हैं। फ़ंक्शन बॉडी के भीतर कीवर्ड तर्क एक शब्दकोश में आयोजित किए जाते हैं। समारोह के नाम के बाद कोष्ठक में इस शब्द को दो तारांकनों द्वारा निरूपित किया जाता है, जिसके बाद शब्दकोश का नाम आता है:
**kwargs
एक ऐसा ही उदाहरण जो कीवर्ड तर्कों को छापता है:
def testFunc(**kwargs):
print kwargs # prints the dictionary of keyword arguments