'NameError' जब फ़ंक्शन को बाद में कोड में परिभाषित किया जाता है, तो इससे 'NameError' अपवाद हो सकता है, जैसे कि कस्टम 'cmp' फ़ंक्शन का उपयोग करके किसी सूची को सॉर्ट करते समय।
इस समस्या से बचने के लिए, "फॉरवर्ड-डिक्लेयर" करना संभव है "परिभाषित होने से पहले एक फ़ंक्शन। इसमें फ़ंक्शन इनवोकेशन को एक अलग फ़ंक्शन में लपेटना शामिल है:def sort_list(): सॉर्टेड_लिस्ट = सॉर्ट किया गया (मायलिस्ट, सीएमपी = सीएमपी_कॉन्फ़िग्स) print('\n'.join([str(bla) for bla in sorted_list])) def cmp_configs(...) -> int: ...
def sort_list():
sorted_list = sorted(mylist, cmp=cmp_configs)
print("\n".join([str(bla) for bla in sorted_list]))
def cmp_configs(...) -> int:
...
पुनरावर्ती कार्य और अग्रेषित-घोषणा
पुनरावर्ती कार्यों के मामले में, जहां एक फ़ंक्शन की परिभाषा दूसरे पर निर्भर करती है, उसी फ़ंक्शन के भीतर अग्रेषित-घोषित करना सहायक हो सकता है:
def spam(): डीईएफ़ अंडे(): यदि अंत_स्थिति(): वापसी अंतिम_परिणाम() अन्य: स्पैम लौटाएँ() यदि अंत_स्थिति(): वापसी अंतिम_परिणाम() अन्य: अंडे लौटाएं() स्पैम()
def spam():
def eggs():
if end_condition():
return end_result()
else:
return spam()
if end_condition():
return end_result()
else:
return eggs()
spam()
निष्कर्ष
आगे -फ़ंक्शंस को उनके आह्वान को अलग-अलग फ़ंक्शंस में लपेटकर या पुनरावर्ती फ़ंक्शंस के भीतर आंतरिक फ़ंक्शंस का उपयोग करके घोषित करना 'NameError' अपवादों को रोकने के लिए एक समाधान प्रदान करता है जब फ़ंक्शंस को बाद में कोड में परिभाषित किया जाता है। हालाँकि, यह ध्यान रखना महत्वपूर्ण है कि कोड संगठन और कार्यों के बीच निर्भरता लूप से बचना हमेशा एक अच्छा अभ्यास है।
अस्वीकरण: उपलब्ध कराए गए सभी संसाधन आंशिक रूप से इंटरनेट से हैं। यदि आपके कॉपीराइट या अन्य अधिकारों और हितों का कोई उल्लंघन होता है, तो कृपया विस्तृत कारण बताएं और कॉपीराइट या अधिकारों और हितों का प्रमाण प्रदान करें और फिर इसे ईमेल पर भेजें: [email protected] हम इसे आपके लिए यथाशीघ्र संभालेंगे।
Copyright© 2022 湘ICP备2022001581号-3