पायथन में फंक्शन को उच्च क्रम का कहा जाता है। इसका मतलब है कि इसे किसी अन्य फ़ंक्शन के तर्क के रूप में पारित किया जा सकता है और/या अन्य फ़ंक्शन भी वापस कर सकता है। functools मॉड्यूल ऐसे उच्च क्रम के कार्यों के लिए महत्वपूर्ण उपयोगिताएँ प्रदान करता है।
आंशिक() फ़ंक्शन
यह फ़ंक्शन कॉल करने योग्य 'आंशिक' ऑब्जेक्ट देता है। ऑब्जेक्ट स्वयं एक फ़ंक्शन की तरह व्यवहार करता है। आंशिक () फ़ंक्शन एक अन्य फ़ंक्शन को तर्क के रूप में प्राप्त करता है और फ़ंक्शन के तर्कों के कुछ हिस्से को जमा देता है जिसके परिणामस्वरूप एक सरल हस्ताक्षर के साथ एक नया ऑब्जेक्ट होता है।
अंतर्निहित int() फ़ंक्शन किसी संख्या को दशमलव पूर्णांक में कनवर्ट करता है। इंट () का डिफॉल्ट सिग्नेचर है
int(x, base = 10)
आंशिक () फ़ंक्शन का उपयोग कॉल करने योग्य बनाने के लिए किया जा सकता है जो int () फ़ंक्शन की तरह व्यवहार करता है जहां आधार तर्क दो पर डिफ़ॉल्ट होता है।
>>> import functools >>> binint = functools.partial(int, base = 2) >>> binint('1001') 9
निम्नलिखित उदाहरण में, एक उपयोगकर्ता परिभाषित फ़ंक्शन myfunction() को मूल फ़ंक्शन के तर्कों में से एक पर डिफ़ॉल्ट मान सेट करके आंशिक फ़ंक्शन के तर्क के रूप में उपयोग किया जाता है।
>>> def myfunction(a,b): return a*b >>> partfunction = functools.partial(myfunction,b = 10) >>> partfunction(10) 100
आंशिक विधि ()
यह फ़ंक्शन एक नया आंशिक विधि विवरणक देता है जो आंशिक रूप से व्यवहार करता है सिवाय इसके कि इसे सीधे कॉल करने योग्य होने के बजाय विधि परिभाषा के रूप में उपयोग करने के लिए डिज़ाइन किया गया है।
Cmp_to_key() फ़ंक्शन
पायथन 2.x में दो वस्तुओं की तुलना के लिए cmp() फ़ंक्शन था। पायथन 3 ने इसे बहिष्कृत कर दिया है। functools मॉड्यूल cmp_to_key() फ़ंक्शन प्रदान करता है जिसके द्वारा उपयोगकर्ता परिभाषित कक्षाओं की वस्तुओं की तुलना की जा सकती है
from functools import cmp_to_key class test: def __init__(self,x): self.x = x def __str__(self): return str(self.x) def cmpr( a,b): if a.x> = b.x: return True if a.x<b.x: return False mykey = cmp_to_key(cmpr)
कम करें () फ़ंक्शन
कम () फ़ंक्शन को दो तर्क, एक फ़ंक्शन और एक पुनरावर्तनीय प्राप्त होता है। हालांकि, यह एक ही मान देता है। तर्क फ़ंक्शन को बाएं से दाएं सूची में संचयी रूप से दो तर्कों पर लागू किया जाता है। पहली कॉल में फ़ंक्शन का परिणाम पहला तर्क बन जाता है और सूची में तीसरा आइटम दूसरा हो जाता है। सूची समाप्त होने तक इसे दोहराया जाता है।
नीचे दिए गए उदाहरण में, दो नंबरों के उत्पाद को वापस करने के लिए मल्टी () फ़ंक्शन को परिभाषित किया गया है। इस फ़ंक्शन का उपयोग 1 से 10 के बीच की संख्याओं की श्रेणी के साथ कम () फ़ंक्शन में किया जाता है। आउटपुट 10 का एक भाज्य मान है।
import functools def mult(x,y): return x*y num = functools.reduce(mult, range(1,11)) print ('factorial of 10: ',num)
आउटपुट
factorial of 10: 3628800