Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Вивчайте Вкладені та множинні менеджери контексту | Розширена Робота з Файлами та Менеджери Контексту
Структурне програмування на Python

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

Свайпніть щоб показати меню

Під час роботи з кількома ресурсами в Python — наприклад, при відкритті більше одного файлу одночасно — важливо переконатися, що кожен ресурс коректно отримується та звільняється. У таких випадках особливо корисними стають вкладені та множинні контекстні менеджери. У відео вище показано два підходи: вкладені оператори with та використання кількох контекстних менеджерів в одному рядку.

Вкладення операторів with означає розміщення одного блоку with всередині іншого. Це зручно, коли використання одного ресурсу залежить від іншого. Наприклад, можна читати з одного файлу та записувати в інший, гарантуючи правильне управління обома файлами:

with open('input.txt', 'r') as infile:
    with open('output.txt', 'w') as outfile:
        for line in infile:
            outfile.write(line.upper())

Однак Python також дозволяє відкривати обидва файли в одному операторі with, розділяючи кожен контекстний менеджер комою. Такий підхід робить код чистішим і гарантує, що кожен ресурс буде звільнений у зворотному порядку до того, як був отриманий. Тобто останній відкритий ресурс закривається першим після завершення блоку.

# Open two files simultaneously using a single 'with' statement
with open('input.txt', 'r') as infile, open('output.txt', 'w') as outfile:
    for line in infile:
        outfile.write(line.lower())
# When the block ends, outfile is closed first, then infile

Використання кількох контекстних менеджерів в одному рядку — це не просто синтаксичний цукор, а надійний спосіб керування кількома ресурсами одночасно. Це особливо важливо при роботі з файлами, мережевими з'єднаннями або блокуваннями, які завжди мають бути коректно звільнені, щоб уникнути витоків ресурсів або взаємних блокувань.

Note
Дізнатися більше
question mark

Яке твердження правильно описує порядок звільнення ресурсів при використанні кількох контекстних менеджерів в одному операторі with?

Виберіть правильну відповідь

Все було зрозуміло?

Як ми можемо покращити це?

Дякуємо за ваш відгук!

Секція 2. Розділ 6

Запитати АІ

expand

Запитати АІ

ChatGPT

Запитайте про що завгодно або спробуйте одне із запропонованих запитань, щоб почати наш чат

Секція 2. Розділ 6
some-alt