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- finallyhoặc withcâ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 fortuyên bố vì tập tin vượt quá phạm vi?
forcá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.
forvò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.
forkhố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.