Использование контекстных менеджеров

Написание функций на Python

Shayne Miel

Software Architect @ Duo Security

Что такое контекстный менеджер?

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

  • Создаёт контекст
  • Выполняет ваш код
  • Удаляет контекст
Написание функций на Python

Банкет с обслуживанием

пустой зал

Написание функций на Python

Банкет с обслуживанием

зал с угощением

Написание функций на Python

Банкет с обслуживанием

зал с гостями

Написание функций на Python

Банкет с обслуживанием

зал с угощением

Написание функций на Python

Банкет с обслуживанием

пустой зал

Написание функций на Python

Банкет как контекст

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

  • Создают контекст
  • Выполняют ваш код
  • Удаляют контекст

Обслуживающий персонал:

  • Накрывает столы с едой и напитками
  • Даёт вам и вашим гостям отдохнуть
  • Убирает и уносит столы
Написание функций на Python

Пример из практики

with open('my_file.txt') as my_file:
  text = my_file.read()
  length = len(text)

print('The file is {} characters long'.format(length))

open() выполняет три действия:

  • Создаёт контекст, открывая файл
  • Позволяет выполнять любой код с этим файлом
  • Удаляет контекст, закрывая файл
Написание функций на Python

Использование контекстного менеджера

with
Написание функций на Python

Использование контекстного менеджера

with <context-manager>()
Написание функций на Python

Использование контекстного менеджера

with <context-manager>(<args>)
Написание функций на Python

Использование контекстного менеджера

with <context-manager>(<args>):
Написание функций на Python

Использование контекстного менеджера

with <context-manager>(<args>):
  # Run your code here
  # This code is running "inside the context"
Написание функций на Python

Использование контекстного менеджера

with <context-manager>(<args>):
  # Run your code here
  # This code is running "inside the context"

# This code runs after the context is removed
Написание функций на Python

Использование контекстного менеджера

with <context-manager>(<args>) as <variable-name>:
  # Run your code here
  # This code is running "inside the context"

# This code runs after the context is removed
with open('my_file.txt') as my_file:
  text = my_file.read()
  length = len(text)

print('The file is {} characters long'.format(length))
Написание функций на Python

Давайте потренируемся!

Написание функций на Python

Preparing Video For Download...