Новичка Python кодер здесь, исходя из фона Java. Я все еще озадачен этим:«с», менеджер контекста, python: что происходит в простых терминах?
with open(...) as f:
do_something(f)
даже после того, как погуглить и читать некоторые из ответов здесь (я просто не мог получить мою голову вокруг них).
Я понимаю, что эта вещь называется менеджером контекста, которая является своего рода оболочкой, которая содержит ссылку на созданный файл. Что касается
as f:
'как' выше, как и 'как' ниже
import numpy as np
Это просто псевдоним. 'f' не относится к файлу, а к менеджеру контекста. Диспетчер контекста, используя шаблон декоратора, реализует все методы, которые открывает файл, поэтому я могу рассматривать его как файл-объект (и получить в объекте файла, вызвав соответствующие методы, которые будут вызываться в файле внутри менеджера контекста). И, конечно, файл закрывается, когда блок завершается (вся эта точка).
Возникает вопрос: Открывает() вообще возвращает файл (или ссылку на файл) или менеджер контекста? Он возвращает менеджеров контекста в целом, и это то, что мы использовали все время, не зная об этом? Или он возвращает типы файлов, кроме этого специального контекста, когда возвращает что-то другое, как менеджер контекста.
Это где-нибудь рядом с правом? Кто-нибудь хотел бы уточнить?
Файлы * являются * менеджерами контекста. – user2357112
'with' после открытия просто закрывает файл после записи. – n1c9
Вы читали https://www.python.org/dev/peps/pep-0343/? –