⚡️ Оператор with в python
При работе с файлами или сетевыми соединения вам необходимо их закрывать даже в случае появления ошибки.
Вместо использования try или, например, finally, мы можем воспользоваться оператором with.
Оператор вызывает __enter__ у обрабатывающего класса, а в случае появления ошибки или окончания работы с объектом — __exit__.
Также, можно использовать декоратор contextmanager из contextlib для обработки файла используя yield.
#теория #операторы
При работе с файлами или сетевыми соединения вам необходимо их закрывать даже в случае появления ошибки.
Вместо использования try или, например, finally, мы можем воспользоваться оператором with.
Оператор вызывает __enter__ у обрабатывающего класса, а в случае появления ошибки или окончания работы с объектом — __exit__.
Также, можно использовать декоратор contextmanager из contextlib для обработки файла используя yield.
#теория #операторы
⚡️ Разница между global и nonlocal
global — объявление, которые говорит о том, что перечисленные идентификаторы стоит воспринимать как глобальные. То есть, все изменения внутри функции будут влиять на внешнюю переменную.
nonlocal — оператор, уведомляющий среду, что стоит работать не с локальной переменной, а уровнем выше.
То есть, если вы создадите функцию внутри функции и используете nonlocal, то будет использоваться не глобальная переменная, а та, что в функции-родителя (смотреть method2).
Стоит отметить, что в отличии от global, nonlocal требует, что бы переменная уже была определена.
Ну и как всегда — документация :)
#теория #операторы
global — объявление, которые говорит о том, что перечисленные идентификаторы стоит воспринимать как глобальные. То есть, все изменения внутри функции будут влиять на внешнюю переменную.
nonlocal — оператор, уведомляющий среду, что стоит работать не с локальной переменной, а уровнем выше.
То есть, если вы создадите функцию внутри функции и используете nonlocal, то будет использоваться не глобальная переменная, а та, что в функции-родителя (смотреть method2).
Стоит отметить, что в отличии от global, nonlocal требует, что бы переменная уже была определена.
Ну и как всегда — документация :)
#теория #операторы