फ़ंक्शन्स: दोबारा इस्तेमाल होने वाले स्टेप्स
फ़ंक्शन एक ऐसा नाम दिया गया नुस्खा है जिसे आप बार-बार इस्तेमाल कर सकते हैं। def, पैरामीटर्स और return सीखें, और जानें कि क्यों प्रिंट करने से बेहतर return करना है।
60 सेकंड में
फ़ंक्शन्स: दोबारा इस्तेमाल होने वाले स्टेप्स
फ़ंक्शन एक ऐसा नाम दिया गया नुस्खा है जिसे आप बार-बार इस्तेमाल कर सकते हैं। def, पैरामीटर्स और return सीखें, और जानें कि क्यों प्रिंट करने से बेहतर return करना है।
फ़ंक्शन बनाना
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" वैल्यू के साथ कॉल करता है, जिसे आर्ग्युमेंट कहा जाता है।कई पैरामीटर्स, और डिफ़ॉल्ट वैल्यूज़
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 argumentsout_of=100 एक डिफ़ॉल्ट वैल्यू है। यदि आप इसे पास नहीं करते हैं, तो Python 100 का इस्तेमाल करता है।return या print?
print() स्क्रीन पर एक वैल्यू दिखाता है, और फिर वह गायब हो जाती है। return वैल्यू को वापस लौटाता है, ताकि आपके प्रोग्राम का बाकी हिस्सा उसका इस्तेमाल कर सके: उसे स्टोर कर सके, जोड़ सके, तुलना कर सके।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)return नहीं होता, वह एक विशेष वैल्यू None वापस देता है, जिसका अर्थ है "कुछ नहीं"। यदि आपको वहाँ None दिखता है जहाँ आप उत्तर की उम्मीद कर रहे थे, तो देखें कि कहीं कोई return छूट तो नहीं गया।फ़ंक्शन्स क्यों मदद करते हैं
- 1
एक बार लिखें
एक काम के सभी स्टेप्स को एक जगह रखें। - 2
कई बार इस्तेमाल करें
इसे हर छात्र, हर बिल, हर मैच के लिए कॉल करें। - 3
एक बार ठीक करें
कोई बग (गड़बड़ी) मिली? इसे फ़ंक्शन में ठीक करें और हर जगह अपने आप ठीक हो जाएगा। - 4
आसानी से पढ़ें
bill_total(cart, prices)आपको हर लाइन पढ़े बिना बता देता है कि क्या हो रहा है।
फ़ंक्शन के अंदर के वैरिएबल्स अंदर ही रहते हैं
greet में, message का इस्तेमाल फ़ंक्शन के बाहर नहीं किया जा सकता। यह फ़ंक्शन्स को साफ़-सुथरा रखता है: वे बाहरी दुनिया से अपने पैरामीटर्स और अपनी return वैल्यू के ज़रिए बात करते हैं।कदम-दर-कदम फ़ंक्शन लिखना
- एक वाक्य में कहें कि यह इनपुट में क्या लेता है और बदले में क्या देता है।
- सही उत्तरों के साथ कुछ उदाहरण लिखें, जिनमें एज केसेस (चरम सीमा वाले मामले) भी शामिल हों।
- बॉडी लिखें।
- इसे अपने उदाहरणों के साथ कॉल करें और उत्तरों की तुलना करें।
- जवाब प्रिंट करता है लेकिन उसे return नहीं करता
- पैरामीटर के बजाय बाहर के वैरिएबल का इस्तेमाल करता है
- एक बहुत बड़ा फ़ंक्शन जो पाँच काम करता है
- जवाब return करता है ताकि दूसरा कोड इसका इस्तेमाल कर सके
- पैरामीटर्स के ज़रिए वह सब कुछ प्राप्त कर लेता है जिसकी उसे ज़रूरत होती है
- छोटे फ़ंक्शन्स जो प्रत्येक एक काम अच्छी तरह से करते हैं
def square(n): लिखें जो n * n return करे। इसे 7 के साथ कॉल करें और जवाब प्रिंट करें। फिर square(3) + square(4) प्रिंट करें। क्या आपको 25 मिला? 🎉और देखें और पढ़ें
लैब
ऑटो-रिक्शा की सवारी के लिए दो छोटे फ़ंक्शन्स: किराया, और प्रत्येक दोस्त का हिस्सा।
समस्या
दो ऐसे फ़ंक्शन्स लिखें जो इन (काल्पनिक) नियमों का ठीक से पालन करते हों:
auto_fare(km)रुपयों में किराया return करता है। पहले 2 किमी का कुल फ़्लैट किराया 30 रुपये है। उसके बाद के प्रत्येक किमी के लिए 15 रुपये लगते हैं। इसलिए 1 किमी का खर्च 30, 2 किमी का खर्च 30, 3 किमी का खर्च 45, और 5 किमी का खर्च 75 रुपये है। आंशिक किलोमीटर भी गिने जाते हैं: 2.5 किमी का खर्च 37.5 होता है।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%)।