Let हम इस कोड है:फ़ंक्शन के अंदर फ़ंक्शन - हर बार?
def big_function():
def little_function():
.......
.........
अजगर प्रलेखन कहते हैं def
के बारे में बयान:
एक समारोह परिभाषा एक निष्पादन योग्य बयान है। इसके निष्पादन समारोह नाम बांधता है ...
तो, सवाल यह है: def little_function()
हर बार निष्पादित करता है जब big_function
शुरू होता है? प्रश्न लगभग def
बयान है, little_function()
शरीर नहीं।
आप कैसे जानते हैं कि 'MAKE_FUNCTION' बाइट-कोड निर्देश को निष्पादित करने में कितना ओवरहेड शामिल है? ऐसा लगता है कि इसे स्मृति आवंटित करने की आवश्यकता हो सकती है जो आमतौर पर अधिकांश अन्य भाषाओं में धीमी गति से संचालन करती है। – martineau
@ मार्टिनौ नहीं, कोई बड़ी स्मृति आवंटन नहीं है। 'MAKE_FUNCTION' ऑप कोड ऑब्जेक्ट के लिए संदर्भ कोड को बढ़ाता है, इसे कॉपी करने की आवश्यकता नहीं है। निश्चित रूप से एक नया फ़ंक्शन ऑब्जेक्ट बनाया गया है, जिसमें एक नया 'PyFunctionObject' आवंटित करना शामिल है लेकिन यह मानते हुए कि * हर * ऑपरेशन पायथन ऑब्जेक्ट आवंटित करता है, यह प्रदर्शन को "महत्वपूर्ण" नहीं देता है (स्पष्ट रूप से महत्वपूर्ण है' my_function के कोड के बाकी हिस्सों पर निर्भर करता है ')। – Bakuriu
ग्रेट स्पष्टीकरण, धन्यवाद! – dondublon