With в Python
В python ключевое слово with используется при работе с неуправляемыми ресурсами (например, файловыми потоками). Инструкция for упрощает обработку исключений путем инкапсуляции общих задач подготовки и очистки. Это позволяет использовать обычные try..except..finally шаблоны использования для инкапсуляции для удобного повторного использования.
with expression [as variable]: with-block
Это удобно, если у вас есть две связанные операции, которые вы хотите выполнить как пару, с блоком кода между ними. Классическим примером является открытие файла, управление файлом, а затем его закрытие:
try: file_obj = open(my_file, 'w') file_obj.write("Halo") finally: file_obj.close()
Используя инструкцию, чтобы открыть файл, обработать его содержимое и закрыть его, вы можете просто сделать:
with open(my_file, 'w') as file_obj: file_obj.write("Halo")
Инструкция with уточняет код, который ранее использовал бы try ... finally блоки для обеспечения выполнения кода очистки. Преимущество использования оператора with состоит в том, что гарантированно закрыть файл независимо от того, как выйдет вложенный блок. Если метод __enter __() возвращается без ошибки, то всегда будет вызываться __exit __(). Таким образом, если во время назначения целевому списку произошла ошибка, он будет обрабатываться так же, как и ошибка, встречающаяся в пакете. Если исключение происходит до конца блока, оно закрывает файл до того, как исключение будет обнаружено внешним обработчиком исключений. Если вложенный блок должен содержать оператор return или оператор continue или break, оператор with автоматически закрывает файл в этих случаях. Используйте с заявлением, когда когда-либо вы приобретаете ресурсы в своем приложении, которые должны быть явно отказаны, например файлы, сетевые подключения, блокировки и т. П.