Контекстные менеджеры Python

PythonBeginner
Практиковаться сейчас

Введение

В этом лабораторном задании вы будете перемещены в волшебное ночное небо, где вы являетесь межзвездным путешественником, совершающим поиски в поисках способа использовать мощь Python контекстных менеджеров. В этой очаровательной сценарии вы будете исследовать глубокие тайны управления контекстом, перемещаясь среди мерцающих звезд и небесных чудес.

Создание контекстного менеджера

В этом шаге вы создадите Python контекстный менеджер в /home/labex/project/context_manager.py для encapsulation набора операций. Ниже приведен пример контекстного менеджера, который имитирует межзвездный портал:

class InterstellarPortal:
    def __enter__(self):
        print("Opening the portal to another dimension")

    def __exit__(self, exc_type, exc_val, exc_tb):
        print("Closing the portal")

## Example usage
with InterstellarPortal():
    print("Stepping into the interstellar portal")

Запустите скрипт:

python context_manager.py

Следующая информация должна быть отображена в вашей терминале:

Opening the portal to another dimension
Stepping into the interstellar portal
Closing the portal

Обработка исключений в контекстном менеджере

В этом шаге вы усовершенствуете контекстный менеджер для обработки исключений, которые могут возникнуть внутри контекста. Посмотрите на модифицированный контекстный менеджер InterstellarPortal.

В /home/labex/project/context_manager.py:

class InterstellarPortal:
    def __enter__(self):
        print("Opening the portal to another dimension")

    def __exit__(self, exc_type, exc_val, exc_tb):
        print("Closing the portal")
        if exc_type is not None:
            print(f"An error occurred: {exc_type}, {exc_val}")

## Example usage
with InterstellarPortal():
    print("Stepping into the interstellar portal")
    1 / 0  ## Simulate an error

Запустите скрипт:

python context_manager.py

Следующая информация должна быть отображена в вашей терминале:

Opening the portal to another dimension
Stepping into the interstellar portal
Closing the portal
An error occurred: <class 'ZeroDivisionError'>, division by zero
Traceback (most recent call last):
  File "/home/labex/project/context_manager.py", line 13, in <module>
    1 / 0  ## Simulate an error
ZeroDivisionError: division by zero

Резюме

В этом лабораторном задании вы исследовали очаровательный мир Python контекстных менеджеров, создав собственный контекстный менеджер межзвездного портала и усовершенствуя его для эффективной обработки исключений. Эта программа поможет вам использовать магические возможности управления контекстом и углубить понимание элегантных возможностей Python. Удачного межзвездного программирования!