else и with в python
Владимир Селюх
Developer
ELSE
else в случаях использования не с if это...
then
ВСЕ =)
Examples
WITH
PEP 0343
The "with" Statement
Что такое и что делает context manager?
- Подготавливает ЧТО-ТО
- Корректно завершает с ЭТИМ работу
Best Practice
-
Уменьшить количество повторяемого кода
-
Скрыть реализацию и дать простой интерфейс для написания клиентского кода
Общий Вид конструкции
* context_manager() может не возвращать никакого значения(None), точно так же это значение может ничему не присваиваться в клиентском коде
with context_manager() as returned_context_manager_value:
do_client_code()Context Manager может быть реализован как:
-
Класс
-
Генератор
CONTEXT MANAGER
Реализация классом
-
Реализовать метод __enter__
-
Реализовать метод __exit__
Метод __exit__
-
Корректное завершение работы (завершение соединения, удаление объекта и т. д. )
-
__exit__ принимает от интерпритатора данные об ошибках произошедших в клиентском коде через значения переменных - exception_type, exception_value и traceback
-
Можете обработать эти ошибки и вернуть True интерпретатору что означает что все ошибки обработаны или их не было
-
Можете не обработать эти ошибки и вернуть True интерпретатору что означает что все ошибки обработаны или их не было

Метод __enter__
-
Предварительная подготовка (установка соединения, создание объекта и т. д.)
-
Объект возвращаемый return может быть получен в пользовательском коде через as
Examples
CONTEXT MANAGER
Реализация генератором
-
Объявить функцию с декоратором
@contextmanager -
Предварительная подготовка (установка соединения, создание объекта и т. д.)
-
yield объект, какое-либо значение или ничего
-
Объект возвращаемый yield может быть получен в пользовательском коде через as
-
Корректно завершить работу
-
Опционально: обработать ошибки православным try/except
Examples
else и with
By Volodymyr Selyukh
else и with
- 452