Python'da, bir dosyayı çağırmadan açarsanız close()
veya dosyayı kapatır ancak try
- finally
veya " with
" ifadesini kullanmazsanız, bu bir sorun mudur? Yoksa tüm dosyaları kapatmak için Python çöp koleksiyonuna güvenmek bir kodlama uygulaması mıdır? Örneğin, biri bunu yaparsa:
for line in open("filename"):
# ... do stuff ...
... bu bir sorun mu var çünkü dosya asla kapatılamıyor ve kapatılmasını önleyen bir istisna oluşabiliyor mu? Yoksa for
dosya kapsam dışında olduğu için ifadenin sonunda kesinlikle kapatılacak mı?
for
bloklar ve işlevler / sınıflar / modüller arasındaki ayrımla ilgili değil . Bundan çok daha basit: nesnelerin kapsamı yok, sadece isimler var. Bu nesneyi ifade eden bir isim yoktur, bu yüzden burada kapsamda kalacak veya kapsam dışında kalacak hiçbir şey yoktur.
for
döngü ile ilişkili bir kapsam olduğu varsayımını düzeltiyor ve dosyanın tamamen farklı bir nedenden dolayı kapatıldığını belirtiyor. Burada alakalı olmadığı için Python'da hangi kapsamların içine girmez .
for
bloğu. Referans sayısı sıfıra inerek otomatik olarak kapanmasına neden olur, ancak yalnızca bileşikler, sınıflar ve modüller Python'daki kapsamları tanımlar, diğer bileşik ifadeleri değil.