पायथन फ़ंक्शन परिभाषा में डिफ़ॉल्ट तर्क सेट करने से फ़ंक्शन कॉल के दौरान तर्क छोड़े जाने पर डिफ़ॉल्ट मान का उपयोग किया जाता है।
निम्नलिखित विवरण नीचे वर्णित हैं।
- डिफ़ॉल्ट तर्क सेट करना
- डिफ़ॉल्ट तर्कों की स्थिति पर प्रतिबंध
- ध्यान दें कि जब किसी सूची या शब्दकोश का उपयोग डिफ़ॉल्ट मान के रूप में किया जाता है
डिफ़ॉल्ट तर्क सेट करना
यदि तर्क नाम = फ़ंक्शन परिभाषा में डिफ़ॉल्ट मान है, तो संबंधित तर्क को छोड़े जाने पर डिफ़ॉल्ट मान का उपयोग किया जाएगा।
def func_default(arg1, arg2='default_x', arg3='default_y'): print(arg1) print(arg2) print(arg3) func_default('a') # a # default_x # default_y func_default('a', 'b') # a # b # default_y func_default('a', arg3='c') # a # default_x # c
डिफ़ॉल्ट तर्कों की स्थिति पर प्रतिबंध
किसी फ़ंक्शन को परिभाषित करते समय एक सामान्य तर्क (एक तर्क जिसके लिए कोई डिफ़ॉल्ट मान निर्दिष्ट नहीं है) से पहले एक डिफ़ॉल्ट तर्क रखने से त्रुटि होती है।SyntaxError
# def func_default_error(arg2='default_a', arg3='default_b', arg1): # print(arg1) # print(arg2) # SyntaxError: non-default argument follows default argument
ध्यान दें कि जब किसी सूची या शब्दकोश का उपयोग डिफ़ॉल्ट मान के रूप में किया जाता है
यदि एक अद्यतन योग्य (म्यूटेबल) ऑब्जेक्ट जैसे सूची या शब्दकोश को डिफ़ॉल्ट मान के रूप में निर्दिष्ट किया जाता है, तो वह ऑब्जेक्ट तब बनाया जाएगा जब फ़ंक्शन परिभाषित किया गया हो। फिर, जब फ़ंक्शन को संबंधित तर्क के बिना कॉल किया जाता है, तो उसी ऑब्जेक्ट का उपयोग किया जाता है।
फ़ंक्शन परिभाषा निष्पादित होने पर डिफ़ॉल्ट तर्क मानों का मूल्यांकन बाएं से दाएं किया जाता है। इसका मतलब है कि डिफ़ॉल्ट तर्क अभिव्यक्ति का मूल्यांकन केवल एक बार किया जाता है जब फ़ंक्शन परिभाषित किया जाता है, और प्रत्येक कॉल के लिए समान “गणना” मान का उपयोग किया जाता है।
8.7. Function definitions — Python 3.10.2 Documentation
इस प्रकार, उदाहरण के लिए, यदि कोई फ़ंक्शन परिभाषित किया गया है जो एक सूची या शब्दकोश को अपने डिफ़ॉल्ट तर्क के रूप में लेता है और इसमें तत्व जोड़ता है, और उस तर्क के बिना कई बार कॉल किया जाता है, तो तत्वों को एक ही ऑब्जेक्ट में बार-बार जोड़ा जाएगा।
लिस्टिंग के लिए उदाहरण।
def func_default_list(l=[0, 1, 2], v=3): l.append(v) print(l) func_default_list([0, 0, 0], 100) # [0, 0, 0, 100] func_default_list() # [0, 1, 2, 3] func_default_list() # [0, 1, 2, 3, 3] func_default_list() # [0, 1, 2, 3, 3, 3]
शब्दकोश के लिए उदाहरण।
def func_default_dict(d={'default': 0}, k='new', v=100): d[k] = v print(d) func_default_dict() # {'default': 0, 'new': 100} func_default_dict(k='new2', v=200) # {'default': 0, 'new': 100, 'new2': 200}
हर बार फ़ंक्शन को कॉल करने पर एक नई वस्तु बनाई जाती है।
def func_default_list_none(l=None, v=3): if l is None: l = [0, 1, 2] l.append(v) print(l) func_default_list_none() # [0, 1, 2, 3] func_default_list_none() # [0, 1, 2, 3]