return स्टेटमेंट पायथन फंक्शन को बाहर निकलने और अपने कॉलर को मान वापस देने का कारण बनता है। फंक्शन्स का उद्देश्य आम तौर पर इनपुट लेना और कुछ वापस करना होता है। एक बार निष्पादित होने पर return स्टेटमेंट तुरंत फंक्शन के निष्पादन को समाप्त कर देता है, भले ही यह फंक्शन में अंतिम स्टेटमेंट न हो।
जो फंक्शन्स मान लौटाते हैं उन्हें कभी-कभी फ्रूटफुल फंक्शन्स कहा जाता है।
उदाहरण
दिया गया कोड निम्न आउटपुट देता है:
def sum(a,b):
return a+b
sum(5,16)
आउटपुट
21
जेनरेटर्स
जेनरेटर्स इटरेटर्स या इटरेबल्स होते हैं जैसे सूचियाँ और टपल्स, लेकिन आप उन पर केवल एक बार इटरेट कर सकते हैं। ऐसा इसलिए है क्योंकि वे सभी मानों को मेमोरी में स्टोर नहीं करते, वे मानों को ऑन-द-फ्लाई जेनरेट करते हैं:
उदाहरण
mygenerator = (x*x for x in range(4))
for i in mygenerator:
print i,
आउटपुट
0 1 4 9
हम for i in mygenerator को दूसरी बार नहीं कर सकते क्योंकि जेनरेटर्स का उपयोग केवल एक बार किया जा सकता है: वे 0 की गणना करते हैं, फिर उसके बारे में भूल जाते हैं और 1, 4 की गणना करते हैं और अंत में 9 की गणना करते हैं, एक-एक करके।
Yield
yield एक कीवर्ड है जिसका उपयोग return की तरह किया जाता है, सिवाय इसके कि फंक्शन एक जेनरेटर लौटाएगा।
हम जेनरेटर से रिटर्न एक्सेस करने के लिए निम्न कोड का उपयोग करते हैं:
उदाहरण
def createGenerator():
for i in range(4):
yield i*i
# this code creates a generator
mygenerator = createGenerator()
print(mygenerator) # mygenerator is an object!
# for i in mygenerator:
# print i,
print(next(mygenerator))
print(next(mygenerator))
print(next(mygenerator))
print(next(mygenerator))
print(next(mygenerator))
आउटपुट
<generator object createGenerator at 0xb71e27fc> 0 1 4 9 Traceback (most recent call last): File "yieldgen1.py", line 12, inprint(next(mygenerator)) StopIteration
व्याख्या
उपरोक्त उदाहरण में yield स्टेटमेंट ने mygenerator बनाया। इसका उपयोग केवल एक बार किया जा सकता है। हम next(mygenerator) कमांड का उपयोग गणना के लिए करते हैं; इसका उपयोग एक बार किया जा सकता है: यह पहले 0 की गणना करता है, फिर उसके बारे में भूल जाता है और दूसरी बार 1 की गणना करता है, तीसरी बार 4 और चौथी बार 9 की गणना करता है, फिर पांचवीं बार यह StopIteration एरर फेंकता है क्योंकि सूची तत्व समाप्त हो गए हैं।