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