Kodokon kodokon.com

फ़ंक्शन: def, पैरामीटर, return और स्कोप

अपने कोड को पुनः प्रयोग योग्य फ़ंक्शन में संरचित करें, डिफ़ॉल्ट वैल्यू में महारत हासिल करें और वेरिएबल स्कोप को समझें।

10 मिनट · 3 प्रश्न

इस पाठ को Kodokon में खोलें

आप पहले से ही लूप और शर्तें लिखना जानते हैं; अब समय है अपने कोड को संरचित करने का। एक फ़ंक्शन किसी विशिष्ट कार्य को एक स्पष्ट नाम के पीछे अलग कर देता है: आप इसे एक बार लिखते हैं, एक बार परखते हैं, और हर जगह कॉल करते हैं। def फ़ंक्शन घोषित करता है, पैरामीटर इनपुट वैल्यू प्राप्त करते हैं और return परिणाम को कॉल करने वाले के पास वापस भेजता है। एक बात याद रखें जिसे अक्सर अनदेखा किया जाता है: बिना return वाला फ़ंक्शन None लौटाता है।

PYTHON
def net_price(price, tax_rate):
    total = price * (1 + tax_rate)
    return round(total, 2)

result = net_price(100, 0.2)
print(result)  # 120.0
फ़ंक्शन दो पैरामीटर प्राप्त करता है और return से एक वैल्यू वापस भेजता है।

डिफ़ॉल्ट वैल्यू किसी फ़ंक्शन को कई रूपांतर बनाए बिना लचीला बनाती हैं: इन्हें आवश्यक पैरामीटरों के बाद घोषित करें। कॉल करते समय, कीवर्ड आर्गुमेंट (currency="USD") आपके इरादे को दस्तावेज़ित करते हैं। पेशेवर कोड में, जैसे ही किसी फ़ंक्शन में दो से अधिक पैरामीटर होते हैं, आप इनका उपयोग करते हैं: कॉल परिभाषा खोले बिना ही स्पष्ट रूप से पढ़ी जाती है।

PYTHON
def format_price(amount, currency="EUR", digits=2):
    return f"{amount:.{digits}f} {currency}"

print(format_price(19.9))                  # 19.90 EUR
print(format_price(19.9, currency="USD"))  # 19.90 USD
print(format_price(19.9, digits=0))        # 20 EUR
कीवर्ड आर्गुमेंट आपको केवल वही निर्दिष्ट करने देते हैं जो बदलता है।
PYTHON
def add_item(item, items=None):
    if items is None:
        items = []
    items.append(item)
    return items

print(add_item("pen"))   # ['pen']
print(add_item("book"))  # ['book']
None पैटर्न के साथ, हर कॉल एक नई लिस्ट से शुरू होती है।

स्कोप यह निर्धारित करता है कि कोई वेरिएबल कहाँ मौजूद है। किसी फ़ंक्शन के अंदर बनाया गया वेरिएबल लोकल होता है: कॉल समाप्त होते ही वह गायब हो जाता है। एक फ़ंक्शन किसी ग्लोबल वेरिएबल को पढ़ सकता है, लेकिन कोई भी असाइनमेंट एक नया लोकल वेरिएबल बना देता है - ग्लोबल अछूता रहता है। अच्छी आदत: ग्लोबल वेरिएबल बदलने के बजाय, पैरामीटर पास करें और परिणाम लौटाएँ; आपका कोड पूर्वानुमेय और परखने योग्य बन जाता है।

PYTHON
rate = 0.2

def apply_tax(price):
    return round(price * (1 + rate), 2)

def set_rate(new_rate):
    rate = new_rate  # local variable, no effect

print(apply_tax(100))  # 120.0
set_rate(0.1)
print(apply_tax(100))  # 120.0, the global is untouched
किसी ग्लोबल को पढ़ना काम करता है; उसे असाइन करना एक लोकल बना देता है।

ज्ञान जांच

सुनिश्चित करें कि आपको इस पाठ के मुख्य बिंदु याद हैं।

  1. बिना return कथन वाला कोई Python फ़ंक्शन क्या लौटाता है?
    • 0
    • None
    • एक खाली स्ट्रिंग
    • एक त्रुटि उत्पन्न होती है
  2. आपको def add_item(item, items=[]) से क्यों बचना चाहिए?
    • डिफ़ॉल्ट लिस्ट एक बार बनती है और सभी कॉल के बीच साझा होती है
    • किसी लिस्ट को डिफ़ॉल्ट वैल्यू के रूप में उपयोग नहीं किया जा सकता
    • यह परिभाषा के समय SyntaxError उत्पन्न करता है
  3. जब आप किसी फ़ंक्शन के अंदर ऐसे वेरिएबल को असाइन करते हैं जिसका उसी नाम का ग्लोबल मौजूद है, तो क्या होता है?
    • Python ग्लोबल वेरिएबल को बदल देता है
    • Python एक लोकल वेरिएबल बनाता है, ग्लोबल अछूता रहता है
    • Python नाम-संघर्ष की त्रुटि उत्पन्न करता है