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 for
pernyataan karena file keluar dari ruang lingkup?
for
blok 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.
for
loop, 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.
for
blok. Jumlah referensi akan menjadi nol, menyebabkannya ditutup secara otomatis, tetapi hanya fungsi, kelas, dan modul yang mendefinisikan cakupan dalam Python, bukan pernyataan majemuk lainnya.