ใน Python หากคุณเปิดไฟล์โดยไม่ต้องโทรclose()หรือปิดไฟล์ แต่ไม่ได้ใช้try- finallyหรือwithคำสั่ง "" นี่เป็นปัญหาหรือไม่ หรือว่าเป็นวิธีการเข้ารหัสที่เพียงพอที่จะใช้กับคอลเลกชัน Python เพื่อปิดไฟล์ทั้งหมดหรือไม่ ตัวอย่างเช่นหากทำสิ่งนี้:
for line in open("filename"):
# ... do stuff ...
... นี่เป็นปัญหาเนื่องจากไฟล์ไม่สามารถปิดได้และอาจมีข้อยกเว้นเกิดขึ้นซึ่งทำให้ไม่สามารถปิดไฟล์ได้ หรือมันจะปิดอย่างแน่นอนในตอนท้ายของforคำสั่งเพราะไฟล์ออกไปนอกขอบเขต?
forบล็อกและฟังก์ชัน / คลาส / โมดูล มันง่ายกว่านั้นมาก: วัตถุไม่มีขอบเขตเพียงชื่อเท่านั้น ไม่มีชื่อที่อ้างถึงวัตถุนี้ดังนั้นจึงไม่มีอะไรให้อยู่ในขอบเขตหรืออยู่นอกขอบเขต
forลูปและกล่าวถึงว่าไฟล์ถูกปิดด้วยเหตุผลที่ต่างออกไปโดยสิ้นเชิง มันไม่เข้ากับขอบเขตใดใน Python เนื่องจากไม่เกี่ยวข้องกับที่นี่
forบล็อก จำนวนการอ้างอิงของมันจะเป็นศูนย์ทำให้ปิดโดยอัตโนมัติ แต่เฉพาะฟังก์ชันคลาสและโมดูลที่กำหนดขอบเขตใน Python ไม่ใช่คำสั่งผสมอื่น ๆ