पायथन में, यदि आप या तो कॉल किए बिना फ़ाइल खोलते हैं close()
, या फ़ाइल को बंद करते हैं, लेकिन उपयोग नहीं कर रहे हैं try
- finally
या " with
" स्टेटमेंट, क्या यह एक समस्या है? या यह सभी फ़ाइलों को बंद करने के लिए पायथन कचरा-संग्रह पर भरोसा करने के लिए एक कोडिंग अभ्यास के रूप में पर्याप्त है? उदाहरण के लिए, यदि कोई ऐसा करता है:
for line in open("filename"):
# ... do stuff ...
... क्या यह एक समस्या है क्योंकि फ़ाइल कभी भी बंद नहीं हो सकती है और एक अपवाद हो सकता है जो इसे बंद होने से रोकता है? या यह निश्चित रूप से for
बयान के समापन पर बंद हो जाएगा क्योंकि फ़ाइल गुंजाइश से बाहर जाती है?
for
ब्लॉक और फ़ंक्शंस / क्लासेस / मॉड्यूल के बीच के अंतर से संबंधित नहीं है । यह उससे बहुत सरल है: वस्तुओं में स्कोप नहीं हैं, केवल नाम हैं। इस ऑब्जेक्ट को संदर्भित करने वाला कोई नाम नहीं है, इसलिए स्कोप में रहने या स्कोप से बाहर जाने के लिए यहां कुछ भी नहीं है।
for
लूप से जुड़ा एक दायरा है , और यह उल्लेख करते हुए कि फ़ाइल पूरी तरह से अलग कारण से बंद हो जाती है। यह पायथन में क्या स्कोप नहीं है, क्योंकि यह यहां प्रासंगिक नहीं है।
for
। इसकी संदर्भ गणना शून्य पर जाएगी, जिससे यह स्वचालित रूप से बंद हो जाएगी, लेकिन केवल फ़ंक्शन, कक्षाएं और मॉड्यूल पायथन में स्कोप को परिभाषित करते हैं, अन्य यौगिक विवरण नहीं।