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

Functools - पायथन में कॉल करने योग्य वस्तुओं पर उच्च-क्रम के कार्य और संचालन

पायथन में फंक्शन को उच्च क्रम का कहा जाता है। इसका मतलब है कि इसे किसी अन्य फ़ंक्शन के तर्क के रूप में पारित किया जा सकता है और/या अन्य फ़ंक्शन भी वापस कर सकता है। 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

  1. क्या पाइथन कार्य वस्तुएं हैं?

    जब आप def स्टेटमेंट का उपयोग करते हैं, या जब आप लैम्ब्डा एक्सप्रेशन का उपयोग करते हैं, तो Python आपके लिए फंक्शन ऑब्जेक्ट बनाता है: हम फंक्शन ऑब्जेक्ट को एट्रिब्यूट असाइन कर सकते हैं और उन्हें निम्नानुसार पुनः प्राप्त कर सकते हैं उदाहरण def foo(): pass foo.score = 20 print(type(foo)) print(foo.score

  1. एक पायथन फ़ंक्शन एक फ़ंक्शन कैसे लौटा सकता है?

    पायथन प्रथम श्रेणी के कार्यों का समर्थन करता है। वास्तव में, पायथन में सभी कार्य प्रथम श्रेणी के कार्य हैं। पायथन फ़ंक्शन से फ़ंक्शन वापस कर सकता है, कार्यों को सूचियों जैसे संग्रह में संग्रहीत कर सकता है और आम तौर पर उनके साथ वैसा ही व्यवहार कर सकता है जैसा आप किसी भी चर या वस्तु के साथ करते हैं।

  1. पायथन और बोटो के साथ S3 ऑब्जेक्ट डाउनलोड करें 3

    इस पोस्ट में हम उदाहरण दिखाते हैं कि पायथन और बोटो 3 लाइब्रेरी का उपयोग करके aws S3 बकेट से फ़ाइलों और छवियों को कैसे डाउनलोड किया जाए। बोटो पायथन के लिए एक एडब्ल्यूएस एसडीके है। यह ऐसे कार्यों का उपयोग करने में आसान प्रदान करता है जो ईसी 2 और एस 3 बाल्टी जैसी एडब्ल्यूएस सेवाओं के साथ बातचीत कर सकत