Друкарня від WE.UA

Пайтон: Менеджери контексту — як і навіщо?

Мабуть кожен пайтон-дев бачив цю, на перший погляд просту і зручну, конструкцію:

with open('file', 'w+') as file:
    file.write('Hello, World')

Але коли вивчаєш пайтон глибше, виникає бажання почати писати щось подібне. Тож, що там під капотом? 🤔

А там ми знайдемо клас, який реалізує магічні методи __enter__ та __exit__, який я розберу іншим разом. У пайтона завжди є простіший метод, тут — за допомогою генератора 🙃

Отож, давайте зробимо свою версію open() 😁

import contextlib

@contextlib.contextmanager
def open(path, mode):
    file = File(path, mode)
    try:
        yield file
    finally:
        file.close()

*Тип File - вигаданий, для спрощення

Виглядає справді дуже просто, хіба ні?)

Глянемо детальніше, що відбувається:

  • Спочатку ми створимо файл

  • Потім “повернемо” (yield) його юзеру

  • За бажанням, контролюємо дії юзера, ловлячи помилки у блоці try/except

  • Прибираємо за собою — закриємо файл у блоці finally

Під юзером я маю на увазі вас самих чи ваших колег, які будуть використовувати ваш контекстний менеджер

Цей синтаксис можна пристосувати до своїх побутових чи робочих задач, якщо просто спробувати, рекомендую, бо сам активно використовую 😊

В якомусь майбутньому блозі я наведу наочний приклад використання, а наразі буду радий відповісти на ваші запитання ❤️

Статті про вітчизняний бізнес та цікавих людей:

Поділись своїми ідеями в новій публікації.
Ми чекаємо саме на твій довгочит!
Вітя
Вітя@kor0p

Python SDET @ ajax.systems

6Довгочити
868Перегляди
18Підписники
Підтримати
На Друкарні з 14 квітня 2023

Більше від автора

  • Пайтон: дескриптори - що це???

    Можливо, навіть далеко не всі чули, що таке дескриптори, але точно всі використовували їхЯ кажу це так впевнено, оскільки @property є дескриптором

    Теми цього довгочиту:

    Програмування
  • Майбутнє фронтенду — Пайтон?🤔

    PyWeb - фронтенд фреймворк, написаний на Пайтоні, мого авторства 🤓 Щоб запускати Пайтон в браузері використовується Pyodide та WebAssembly

    Теми цього довгочиту:

    Python

Це також може зацікавити:

  • Як ноутбук може стати найкращим другом вашої дитини (і чому це ок)

    Погляньмо правді в очі: у наш час ноутбук — це вже не просто гаджет. Для сучасних дітей він може стати вікном у світ можливостей, інструментом для розвитку і навіть місцем для пошуку друзів. І якщо це звучить тривожно, не поспішайте хвилюватися. Зараз розповімо, чому

    Теми цього довгочиту:

    Батьківство
  • Java. Трішки про JVM та graceful shutdown

    У сучасних Java-додатках важливо забезпечити не лише високу продуктивність, але й коректне завершення роботи. Тому розглянемо основні потоки JVM, процес graceful shutdown, використання класу Runtime та механізму shutdown hooks для ефективного завершення роботи програм.

    Теми цього довгочиту:

    Java
  • Автоматичне тестування ПЗ (визначення, процес створення)

    Автоматичне тестування — це техніка тестування пз, яка виконується за допомогою спеціальних програмних засобів автоматизованого тестування.

    Теми цього довгочиту:

    It

Коментарі (0)

Підтримайте автора першим.
Напишіть коментар!

Це також може зацікавити:

  • Як ноутбук може стати найкращим другом вашої дитини (і чому це ок)

    Погляньмо правді в очі: у наш час ноутбук — це вже не просто гаджет. Для сучасних дітей він може стати вікном у світ можливостей, інструментом для розвитку і навіть місцем для пошуку друзів. І якщо це звучить тривожно, не поспішайте хвилюватися. Зараз розповімо, чому

    Теми цього довгочиту:

    Батьківство
  • Java. Трішки про JVM та graceful shutdown

    У сучасних Java-додатках важливо забезпечити не лише високу продуктивність, але й коректне завершення роботи. Тому розглянемо основні потоки JVM, процес graceful shutdown, використання класу Runtime та механізму shutdown hooks для ефективного завершення роботи програм.

    Теми цього довгочиту:

    Java
  • Автоматичне тестування ПЗ (визначення, процес створення)

    Автоматичне тестування — це техніка тестування пз, яка виконується за допомогою спеціальних програмних засобів автоматизованого тестування.

    Теми цього довгочиту:

    It