Trong Python, nếu bạn mở tệp mà không gọi close()
hoặc đóng tệp nhưng không sử dụng try
- finally
hoặc with
câu lệnh "", đây có phải là vấn đề không? Hay nó là một thực hành mã hóa dựa vào bộ sưu tập rác Python để đóng tất cả các tệp? Ví dụ: nếu một người làm điều này:
for line in open("filename"):
# ... do stuff ...
... Đây có phải là một vấn đề vì tập tin không bao giờ có thể bị đóng và một ngoại lệ có thể xảy ra khiến nó không được đóng? Hoặc nó chắc chắn sẽ bị đóng khi kết thúc for
tuyên bố vì tập tin vượt quá phạm vi?
for
các khối và chức năng / lớp / mô-đun. Nó đơn giản hơn thế nhiều: các đối tượng không có phạm vi, chỉ có tên mới làm được. Không có tên nào đề cập đến đối tượng này, vì vậy không có gì ở đây để ở trong phạm vi hoặc đi ra khỏi phạm vi.
for
vòng lặp và đề cập rằng tệp bị đóng vì một lý do hoàn toàn khác. Nó không đi vào phạm vi nào trong Python, vì nó không liên quan ở đây.
for
khối. Số tham chiếu của nó sẽ về 0, khiến nó tự động bị đóng, nhưng chỉ các hàm, lớp và mô-đun xác định phạm vi trong Python, chứ không phải các câu lệnh ghép khác.