Використання менеджерів контексту

Написання функцій у 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...