मेरे पास कुछ रिकर्सिव बैकट्रैकिंग कोड है जो परीक्षण करता है कि इसे बनाने से पहले कोई विकल्प मान्य है या नहीं। क्या is_legal_choice
रिकर्सिव solve
फ़ंक्शन के अंदर फ़ंक्शन को घोंसला करना बुरा विचार है? क्या solve
फ़ंक्शन को हर बार इस आंतरिक फ़ंक्शन को फिर से परिभाषित किया जाएगा?एक रिकर्सिव फ़ंक्शन के अंदर एक आंतरिक फ़ंक्शन को परिभाषित करना एक बुरा विचार है?
उत्तर
हां, समारोह के हर बार आंतरिक कार्य को फिर से परिभाषित किया जाएगा। हालांकि, यह उतना बुरा नहीं है जितना आप मान सकते हैं; पाइथन कोड को एक बार कोड ऑब्जेक्ट में पार्स किया जाता है, और केवल फ़ंक्शन ऑब्जेक्ट (जो कोड ऑब्जेक्ट के लिए रैपर के प्रकार के रूप में कार्य करता है) हर बार नया बनाया जाता है।
आपके उत्तर के लिए धन्यवाद। यह समझ में आता है और जानकारीपूर्ण है! – rookie
हां, इसे हर बार कॉल करने के लिए फिर से परिभाषित किया जाएगा। हालांकि, यह हमेशा एक बुरा विचार नहीं है। इस तरह आप एक बंद कर देंगे, जो कभी-कभी उपयोगी होता है।
यदि आपके is_legal_choice
फ़ंक्शन को कुछ डेटा का उपयोग करने की आवश्यकता है जो केवल बाहरी फ़ंक्शन के दायरे में उपलब्ध है, तो मैं इसके लिए कहूंगा। प्रदर्शन ओवरहेड बहुत बड़ा नहीं होगा (यदि आपको आवश्यकता हो तो आप हमेशा प्रोफाइल कर सकते हैं)।
यदि is_legal_choice
को solve
के पैरामीटर से किसी भी डेटा की आवश्यकता नहीं है, तो जो भी आपके कोड को सबसे समझ में आता है।
आप गूगल के साथ बंद होने में अधिक जानकारी प्राप्त कर सकते हैं, लेकिन यहाँ एक उदाहरण है: http://ynniv.com/blog/2007/08/closures-in-python.html
- 1. फ़ंक्शन के अंदर एक फ़ंक्शन को परिभाषित करने के लिए
- 2. फ़ंक्शन में स्ट्रीम बंद करना, एक बुरा विचार?
- 3. PHP - एक रिकर्सिव फ़ंक्शन
- 4. एक रिकर्सिव फ़ंक्शन
- 5. आर: एक आंतरिक फ़ंक्शन
- 6. एक आंतरिक समारोह में फ़ंक्शन फ़ंक्शन पास करना?
- 7. रिकर्सिव फ़ंक्शन एक स्टैक ओवरफ़्लो
- 8. PHP - फ़ंक्शन के अंदर कक्षाओं को परिभाषित करना
- 9. फ़ंक्शन पॉइंटर्स को परिभाषित करना
- 10. फ़ंक्शन के अंदर चर परिभाषित करना Haskell
- 11. एक रिकर्सिव फ़ंक्शन में समान मान को पास करना?
- 12. बेनामी क्लासेस एक बुरा विचार है?
- 13. क्यों Process.killProcess (Process.myPid()) को कॉल करना एक बुरा विचार है?
- 14. ini_set ('max_execution_time', 0) एक बुरा विचार है?
- 15. क्या अंतिम स्थिर विधि घोषित करना एक बुरा विचार है?
- 16. क्या फ़ंक्शन के अंदर एक संरचना को परिभाषित करने के लिए कोई "दंड" है?
- 17. एक रिकर्सिव डिलीट फ़ंक्शन (PHP में)
- 18. जीएनयू एक उपयोगकर्ता द्वारा परिभाषित फ़ंक्शन के अंदर सशर्त फ़ंक्शन $ (यदि ...) को हमेशा सच्चे
- 19. फ़ंक्शन के अंदर फ़ंक्शन घोषित करना?
- 20. कॉल फ़ंक्शन कोडिनेटर के नियंत्रक पर एक अंदर फ़ंक्शन बी
- 21. परिभाषित करने से पहले एक फ़ंक्शन को कॉल करना | PHP
- 22. रिकर्सिव फ़ंक्शन
- 23. रिकर्सिव फ़ंक्शन
- 24. एक फ़ंक्शन के अंदर डेटा (पैकेज निर्माण)
- 25. * {स्थिति: सापेक्ष} एक बुरा विचार है?
- 26. क्यों सार्वजनिक ऑब्जेक्ट पर लॉक करना एक बुरा विचार है
- 27. डेटा.table के अंदर एक फ़ंक्शन कैसे चलाएं?
- 28. फेरवेल एक फ़ंक्शन के अंदर अपरिभाषित चर
- 29. रिकर्सिव फ़ंक्शन
- 30. PHP के लिए एक रिकर्सिव हटाने निर्देशिका फ़ंक्शन?
समारोह * वस्तु * हर बार अपने कार्य कहा जाता है: बनाई जाएँगी। यह उतना बुरा नहीं है जितना लगता है; कोड ऑब्जेक्ट पहले से मौजूद है और फ़ंक्शन ऑब्जेक्ट सृजन अपेक्षाकृत हल्का वजन है। –
यदि यह रखरखाव/पठनीयता परिप्रेक्ष्य से आपको समझ में आता है, तो फ़ंक्शन ऑब्जेक्ट निर्माण ओवरहेड के बारे में बहुत चिंता न करें। –
@MartijnPieters: मैं यह करूँगा ... धन्यवाद! – rookie