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