पायथन फ़ंक्शन कई मान लौटा सकते हैं। इन मानों को सीधे चर में संग्रहीत किया जा सकता है। एक फ़ंक्शन एक चर वापस करने के लिए प्रतिबंधित नहीं है, यह शून्य, एक, दो या अधिक मान लौटा सकता है।
यह कई मानों/चरों को वापस करने के लिए पायथन की डिफ़ॉल्ट संपत्ति है जो सी ++ या जावा जैसी कई अन्य प्रोग्रामिंग भाषाओं में उपलब्ध नहीं है।
किसी फ़ंक्शन से कई मान वापस करने के लिए, हम अपनी आवश्यकता के अनुसार टपल, सूची या शब्दकोश ऑब्जेक्ट वापस कर सकते हैं।
विधि 1:टपल का उपयोग करना
def func(x): y0 = x+ 1 y1 = x * 3 y2 = y0 ** 3 return (y0, y1, y2)
हालाँकि, उपरोक्त कार्यक्रम समस्याग्रस्त हो जाता है क्योंकि लौटाए गए मूल्यों की संख्या बढ़ जाती है। अगर हम छह या सात मान वापस करना चाहते हैं? ज़रूर, हम उन्हें गुदगुदाते रह सकते हैं, लेकिन यह भूलना आसान हो जाता है कि कौन सा मूल्य कहाँ है। साथ ही हम उन्हें जहां भी प्राप्त करना चाहते हैं, उन्हें अनपैक करना थोड़ा गड़बड़ हो जाता है।
विधि 2:शब्दकोश का उपयोग करना
शब्दकोश का उपयोग करना एक और बेहतर उपाय है।
def func(x): y0 = x+ 1 y1 = x * 3 y2 = y0 ** 3 return {'y0': y0, 'y1': y1, 'y2': y2}
अब, हमारे पास एक तंत्र है जिससे हम लौटाई गई वस्तु के एक विशेष सदस्य को प्रक्षेपित कर सकते हैं।
उदाहरण के लिए -
result[‘y1’]
विधि 3:कक्षा का उपयोग करना
एक अन्य विकल्प वर्ग का उपयोग करना है, जहां हम एक विशेष संरचना वापस कर सकते हैं।
class ReturnValue(obj): def __init__(self, y0, y1, y2): self.y0 = y0 self.y1 = y1 self.y2 = y2 def g(x): y0 = x + 1 y1 = x * 3 y2 = y0 ** 3 return ReturnValue (y0, y1, y2)
विधि 4:सूची का उपयोग करना
एक अन्य विधि सूची का उपयोग कर रही है।
def func(x): result = [x + 1] result.append(x * 3) result.append(y0 ** 3) return result
विधि 5:जनरेटर का उपयोग करना
हम एक-एक करके कई मानों को वापस करने के लिए उपज का उपयोग करने के इस विकल्प को चुन सकते हैं, अगर हमें बड़ी संख्या में मान वापस करना है तो अनुक्रमों का उपयोग करने से बहुत सारे सिस्टम संसाधनों का उपभोग हो सकता है।
def func(x): y0 = x + 1 yield y0 yield x * 3 yield y0 ** 3
किसी फ़ंक्शन से एकाधिक मान वापस करने के लिए कौन सी विधि सबसे अच्छी है?
यह सब आपके स्वाद या आवश्यकता पर निर्भर करता है कि आपको कौन सा तरीका अधिक पसंद है। आप शब्दकोश मार्ग चुन सकते हैं क्योंकि इसमें कम सेट-अप कार्य शामिल है। या आप क्लास रूट का विकल्प चुन सकते हैं क्योंकि इससे आपको यह भ्रमित करने से बचने में मदद मिल सकती है कि कोई शब्दकोश क्या दर्शाता है। या आप एक-एक करके मान उत्पन्न करने के लिए जनरेटर चुन सकते हैं।