Dalam Python, jika Anda membuka file tanpa memanggil close(), atau menutup file tetapi tidak menggunakan try- finally" with" pernyataan, apakah ini masalah? Atau apakah cukup sebagai praktik pengkodean untuk mengandalkan pengumpulan sampah Python untuk menutup semua file? Sebagai contoh, jika seseorang melakukan ini:
for line in open("filename"):
# ... do stuff ...
... apakah ini masalah karena file tidak pernah dapat ditutup dan pengecualian dapat terjadi yang mencegahnya tidak ditutup? Atau pasti akan ditutup pada akhir forpernyataan karena file keluar dari ruang lingkup?
forblok dan fungsi / kelas / modul. Ini jauh lebih sederhana dari itu: objek tidak memiliki cakupan, hanya nama yang melakukannya. Tidak ada nama yang merujuk ke objek ini, jadi tidak ada apa pun di sini untuk tetap berada dalam ruang lingkup atau keluar dari ruang lingkup.
forloop, dan menyebutkan bahwa file ditutup karena alasan yang sama sekali berbeda. Itu tidak masuk ke lingkup apa yang ada di Python, karena itu tidak relevan di sini.
forblok. Jumlah referensi akan menjadi nol, menyebabkannya ditutup secara otomatis, tetapi hanya fungsi, kelas, dan modul yang mendefinisikan cakupan dalam Python, bukan pernyataan majemuk lainnya.