जब एक पायथन मॉड्यूल (.py फ़ाइल) चलाया जाता है, तो उसमें शीर्ष स्तर के स्टेटमेंट वे दिखाई देने वाले क्रम में निष्पादित होते हैं, ऊपर से नीचे (शुरुआत से अंत तक)। इसका मतलब है कि जब तक आप इसे परिभाषित नहीं करते तब तक आप किसी चीज़ का संदर्भ नहीं दे सकते। उदाहरण के लिए निम्नलिखित दिखाई गई त्रुटि उत्पन्न करेगा:
c = a + b
a = 13
b = 17
कई अन्य भाषाओं के विपरीत, def
और class
बयान अजगर में निष्पादन योग्य हैं - न केवल घोषणात्मक - इसलिए आप a
या तो b
तब तक संदर्भ नहीं दे सकते जब तक कि ऐसा न हो और वे परिभाषित हों। यही कारण है कि आपके पहले उदाहरण में परेशानी है - आप Kerma()
फ़ंक्शन का उल्लेख कर रहे हैं इससे पहले कि उसके def
बयान को निष्पादित किया गया है और शरीर को संसाधित किया गया है और परिणामस्वरूप फ़ंक्शन ऑब्जेक्ट फ़ंक्शन के नाम के लिए बाध्य है, इसलिए यह स्क्रिप्ट में उस बिंदु पर परिभाषित नहीं है।
C ++ जैसी भाषाओं में प्रोग्राम आमतौर पर चलने से पहले प्रीप्रोसेस किए जाते हैं और इस संकलन के दौरान पूरे प्रोग्राम और किसी भी #include
फाइल को संदर्भित किया जाता है जिसे एक ही बार में पढ़ा और प्रोसेस किया जाता है। पाइथन के विपरीत, इस भाषा में घोषणात्मक वक्तव्य दिए गए हैं जो कार्यों के नाम और कॉलिंग अनुक्रम (या स्थिर प्रकार के चर) को घोषित करने की अनुमति देते हैं (लेकिन परिभाषित नहीं हैं), उपयोग करने से पहले ताकि जब कंपाइलर उनके नाम का सामना करता है, तो उनकी जांच करने के लिए पर्याप्त जानकारी हो उपयोग, जो मुख्य रूप से प्रकार की जाँच और प्रकार के रूपांतरणों को शामिल करता है, जिनमें से किसी को भी उनकी वास्तविक सामग्री या कोड बॉडी की आवश्यकता नहीं है।