W Pythonie, jeśli otworzysz plik bez wywołania close()
lub zamkniesz plik, ale nie używasz try
- finally
lub instrukcji " with
", czy to jest problem? A może jako praktyka kodowania wystarczy polegać na wyrzucaniu elementów bezużytecznych w Pythonie, aby zamknąć wszystkie pliki? Na przykład, jeśli to zrobi:
for line in open("filename"):
# ... do stuff ...
... czy jest to problem, ponieważ pliku nigdy nie można zamknąć i może wystąpić wyjątek uniemożliwiający jego zamknięcie? A może na pewno zostanie zamknięty po zakończeniu for
oświadczenia, ponieważ plik wykracza poza zakres?
for
blokami a funkcjami / klasami / modułami. To znacznie prostsze: obiekty nie mają zasięgów, tylko nazwy mają. Nie ma nazwy odnoszącej się do tego obiektu, więc nie ma tu nic, co mogłoby pozostać w zakresie lub wyjść poza zakres.
for
pętla jest związana z zakresem i wspomina, że plik zostaje zamknięty z zupełnie innego powodu. Nie chodzi o to, jakie zakresy są w Pythonie, ponieważ nie ma to znaczenia.
for
bloku. Jego liczba odwołań spadnie do zera, powodując automatyczne zamknięcie, ale tylko funkcje, klasy i moduły definiują zakresy w Pythonie, a nie inne instrukcje złożone.