शुरुआत से Pythonशुरुआतीपाठ 1045 मिनट का पाठ

फ़ंक्शन्स: दोबारा इस्तेमाल होने वाले स्टेप्स

फ़ंक्शन एक ऐसा नाम दिया गया नुस्खा है जिसे आप बार-बार इस्तेमाल कर सकते हैं। def, पैरामीटर्स और return सीखें, और जानें कि क्यों प्रिंट करने से बेहतर return करना है।

पाठ वीडियो में

60 सेकंड में

फ़ंक्शन्स: दोबारा इस्तेमाल होने वाले स्टेप्स

फ़ंक्शन एक ऐसा नाम दिया गया नुस्खा है जिसे आप बार-बार इस्तेमाल कर सकते हैं। def, पैरामीटर्स और return सीखें, और जानें कि क्यों प्रिंट करने से बेहतर return करना है।

1/5
आसान शब्दों में
प्रेशर कुकर की उस रेसिपी के बारे में सोचें जो आपका परिवार हर हफ़्ते इस्तेमाल करता है। कोई भी इसे हर बार नए सिरे से नहीं लिखता; वे बस कहते हैं "हमेशा वाली दाल बना लो"। एक फ़ंक्शन भी वैसा ही है: आप स्टेप्स एक बार लिखते हैं, उन्हें एक नाम देते हैं, और फिर बस उस नाम का इस्तेमाल करते हैं।

फ़ंक्शन बनाना

Python: your own functionpython
def greet(name):
    message = f"Namaste, {name}!"
    return message

print(greet("Meena"))
print(greet("Karan"))
  • def का मतलब है "फ़ंक्शन तय करना" (define a function)।
  • greet इसका नाम है। ऐसा नाम चुनें जो बताए कि यह क्या करता है।
  • ब्रैकेट्स के अंदर name एक पैरामीटर है: एक ऐसा वैरिएबल जिसे फ़ंक्शन इस्तेमाल होने पर अपनी वैल्यू मिलती है।
  • इंडेंट की गई (आगे खिसकाई गई) लाइनें बॉडी हैं: यानी काम करने के स्टेप्स।
  • return उस जवाब को वापस उसी को थमा देता है जिसने फ़ंक्शन का इस्तेमाल किया था।
किसी फ़ंक्शन का इस्तेमाल करना उसे कॉल करना कहलाता है। greet("Meena"), greet को "Meena" वैल्यू के साथ कॉल करता है, जिसे आर्ग्युमेंट कहा जाता है।

कई पैरामीटर्स, और डिफ़ॉल्ट वैल्यूज़

Python: marks as a percentagepython
def percentage(marks, out_of=100):
    return marks / out_of * 100

print(percentage(45))           # out_of uses its default, 100: 45.0
print(percentage(18, 25))       # 18 out of 25: 72.0
print(percentage(out_of=50, marks=40))   # you can name the arguments
out_of=100 एक डिफ़ॉल्ट वैल्यू है। यदि आप इसे पास नहीं करते हैं, तो Python 100 का इस्तेमाल करता है।

return या print?

इस पाठ का यह सबसे महत्वपूर्ण विचार है। print() स्क्रीन पर एक वैल्यू दिखाता है, और फिर वह गायब हो जाती है। return वैल्यू को वापस लौटाता है, ताकि आपके प्रोग्राम का बाकी हिस्सा उसका इस्तेमाल कर सके: उसे स्टोर कर सके, जोड़ सके, तुलना कर सके।
Python: print is not returnpython
def add_gst_print(amount):
    print(amount * 1.18)

def add_gst_return(amount):
    return amount * 1.18

a = add_gst_print(100)     # shows 118.0 on screen...
print("a is", a)           # ...but a is None: nothing came back
b = add_gst_return(100)
print("b is", b)           # b is 118.0, ready to use
print("Two items:", b * 2)
नोट
ऊपर दिया गया 18% सिर्फ़ गणित को समझाने के लिए एक उदाहरण संख्या है। वास्तविक GST दरें वस्तु पर निर्भर करती हैं और बदल सकती हैं, इसलिए यदि आपको कभी वास्तविक बिल की आवश्यकता हो तो वर्तमान दर की जाँच करें।
जिस फ़ंक्शन में कोई return नहीं होता, वह एक विशेष वैल्यू None वापस देता है, जिसका अर्थ है "कुछ नहीं"। यदि आपको वहाँ None दिखता है जहाँ आप उत्तर की उम्मीद कर रहे थे, तो देखें कि कहीं कोई return छूट तो नहीं गया।

फ़ंक्शन्स क्यों मदद करते हैं

  1. 1

    एक बार लिखें

    एक काम के सभी स्टेप्स को एक जगह रखें।
  2. 2

    कई बार इस्तेमाल करें

    इसे हर छात्र, हर बिल, हर मैच के लिए कॉल करें।
  3. 3

    एक बार ठीक करें

    कोई बग (गड़बड़ी) मिली? इसे फ़ंक्शन में ठीक करें और हर जगह अपने आप ठीक हो जाएगा।
  4. 4

    आसानी से पढ़ें

    bill_total(cart, prices) आपको हर लाइन पढ़े बिना बता देता है कि क्या हो रहा है।

फ़ंक्शन के अंदर के वैरिएबल्स अंदर ही रहते हैं

फ़ंक्शन के अंदर बनाया गया वैरिएबल केवल तभी तक मौजूद रहता है जब तक फ़ंक्शन चलता है। greet में, message का इस्तेमाल फ़ंक्शन के बाहर नहीं किया जा सकता। यह फ़ंक्शन्स को साफ़-सुथरा रखता है: वे बाहरी दुनिया से अपने पैरामीटर्स और अपनी return वैल्यू के ज़रिए बात करते हैं।

कदम-दर-कदम फ़ंक्शन लिखना

  1. एक वाक्य में कहें कि यह इनपुट में क्या लेता है और बदले में क्या देता है।
  2. सही उत्तरों के साथ कुछ उदाहरण लिखें, जिनमें एज केसेस (चरम सीमा वाले मामले) भी शामिल हों।
  3. बॉडी लिखें।
  4. इसे अपने उदाहरणों के साथ कॉल करें और उत्तरों की तुलना करें।
इस्तेमाल करना मुश्किल
  • जवाब प्रिंट करता है लेकिन उसे return नहीं करता
  • पैरामीटर के बजाय बाहर के वैरिएबल का इस्तेमाल करता है
  • एक बहुत बड़ा फ़ंक्शन जो पाँच काम करता है
इस्तेमाल करना आसान
  • जवाब return करता है ताकि दूसरा कोड इसका इस्तेमाल कर सके
  • पैरामीटर्स के ज़रिए वह सब कुछ प्राप्त कर लेता है जिसकी उसे ज़रूरत होती है
  • छोटे फ़ंक्शन्स जो प्रत्येक एक काम अच्छी तरह से करते हैं
यह आज़माएँ। def square(n): लिखें जो n * n return करे। इसे 7 के साथ कॉल करें और जवाब प्रिंट करें। फिर square(3) + square(4) प्रिंट करें। क्या आपको 25 मिला? 🎉

और देखें और पढ़ें

लैब

ऑटो-रिक्शा की सवारी के लिए दो छोटे फ़ंक्शन्स: किराया, और प्रत्येक दोस्त का हिस्सा।

~15 min

समस्या

दो ऐसे फ़ंक्शन्स लिखें जो इन (काल्पनिक) नियमों का ठीक से पालन करते हों:

  1. auto_fare(km) रुपयों में किराया return करता है। पहले 2 किमी का कुल फ़्लैट किराया 30 रुपये है। उसके बाद के प्रत्येक किमी के लिए 15 रुपये लगते हैं। इसलिए 1 किमी का खर्च 30, 2 किमी का खर्च 30, 3 किमी का खर्च 45, और 5 किमी का खर्च 75 रुपये है। आंशिक किलोमीटर भी गिने जाते हैं: 2.5 किमी का खर्च 37.5 होता है।
  2. split_bill(total, people=2) यह return करता है कि प्रत्येक व्यक्ति कितना भुगतान करेगा, जिसे ऊपर की तरफ़ (round up) पूरे रुपये में राउंड किया गया है, ताकि ड्राइवर को कभी पैसे कम न पड़ें। उदाहरण के लिए split_bill(100, 3) 34 है, और split_bill(90) 45 है। टिप: math.ceil() ऊपर की ओर राउंड करता है।

दोनों फ़ंक्शन्स को अपना जवाब सिर्फ़ प्रिंट ही नहीं करना चाहिए, बल्कि return करना चाहिए। पहले स्टार्टर कोड को चलाएँ: क्या आप समझ सकते हैं कि यह None क्यों दिखाता है?

प्रैक्टिस लैब

कोड में बदलाव करें और इसे रन करें। Python आपके ब्राउज़र में चलता है — हमारे सर्वर पर कुछ नहीं भेजा जाता।

आउटपुट

कोई आउटपुट नहीं। वैल्यूज़ देखने के लिए print(...) जोड़ें।

आपका काम तब पूरा होगा जब

कठिन सवाल

उत्तर देखने से पहले ख़ुद जवाब देने की कोशिश करें। अगर आप इनके जवाब दे सकते हैं, तो आप पाठ समझ गए हैं।

Q1स्टार्टर कोड ने <code>Fare for 5 km: None</code> क्यों प्रिंट किया, भले ही उसने 30 भी प्रिंट किया था?दिखाएं

auto_fare ने फ़ंक्शन के अंदर 30 प्रिंट किया, लेकिन इसमें कोई return नहीं था, इसलिए कॉल ने वापस None दिया। वह None, fare में स्टोर हो गया और प्रिंट हो गया। प्रिंट करने से केवल एक वैल्यू दिखती है; केवल return ही इसे कॉल करने वाले को देता है।

Q2split_bill में round() का इस्तेमाल करने के बजाय <em>ऊपर की ओर</em> राउंड क्यों करें?दिखाएं

round(100 / 3) के साथ प्रत्येक व्यक्ति 33 रुपये का भुगतान करता है, और तीन लोग मिलकर केवल 99 रुपये देते हैं, यानी एक रुपया कम। ऊपर की ओर राउंड करने से (प्रत्येक 34 रुपये, कुल मिलाकर 102 रुपये) यह सुनिश्चित होता है कि पूरा किराया हमेशा चुकता हो जाए। सही राउंडिंग का चुनाव करना बिलिंग कोड में एक महत्वपूर्ण डिज़ाइन निर्णय होता है।

जारी रखने के लिए कृपया साइन इन करें।

अक्सर पूछे जाने वाले सवाल

पैरामीटर और आर्ग्युमेंट में क्या अंतर है?

पैरामीटर वह नाम है जो def वाली लाइन में होता है, जैसे name। आर्ग्युमेंट वह वास्तविक वैल्यू है जिसे आप कॉल करते समय पास करते हैं, जैसे "Meena"। लोग अक्सर इन दोनों शब्दों को आपस में मिला देते हैं, और इसमें कोई बुराई नहीं है।

क्या कोई फ़ंक्शन एक से ज़्यादा वैल्यू return कर सकता है?

हाँ। return total, count दोनों को वापस देता है, और आप उन्हें t, c = my_function() से कैच कर सकते हैं। Python उन्हें एक tuple में पैक कर देता है, जो एक ऐसी लिस्ट की तरह होता है जिसे आप बदल नहीं सकते।

क्या return के बाद का कोड चलता है?

नहीं। return फ़ंक्शन को तुरंत समाप्त कर देता है। उसी ब्लॉक में इसके बाद की किसी भी लाइन को छोड़ दिया जाता है।

मुझे अपने फ़ंक्शन्स कहाँ रखने चाहिए?

उन्हें सबसे ऊपर के पास तय करें, उन लाइनों से पहले जो उन्हें कॉल करती हैं। आपके द्वारा फ़ंक्शन का इस्तेमाल करने से पहले Python को def पढ़ लेना चाहिए।

पाठ का टेस्ट

5 सवाल। पास होने और इस पाठ को पूरा करने के लिए 3 सही होने चाहिए (60%)।

टेस्ट देने और अपनी प्रोग्रेस सेव करने के लिए साइन इन करें