Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Aprenda Gerenciadores de Contexto Aninhados e Múltiplos | Manipulação Avançada de Arquivos e Gerenciadores de Contexto
Programação Estrutural em Python

Gerenciadores de Contexto Aninhados e Múltiplos

Deslize para mostrar o menu

Ao trabalhar com vários recursos em Python – como abrir mais de um arquivo ao mesmo tempo – muitas vezes é necessário garantir que cada recurso seja devidamente adquirido e liberado. É nesse contexto que os gerenciadores de contexto aninhados e múltiplos tornam-se especialmente úteis. O vídeo acima mostra duas abordagens: aninhamento de instruções with e o uso de múltiplos gerenciadores de contexto em uma única linha.

Aninhar instruções with significa colocar um bloco with dentro de outro. Isso é útil quando o uso de um recurso depende de outro. Por exemplo, você pode ler de um arquivo e escrever em outro, garantindo que ambos sejam gerenciados corretamente:

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

No entanto, o Python também permite abrir ambos os arquivos em uma única instrução with, separando cada gerenciador de contexto com uma vírgula. Essa abordagem torna seu código mais limpo e garante que cada recurso seja liberado na ordem inversa à que foi adquirido. Isso significa que o último recurso aberto é o primeiro a ser fechado quando o bloco termina.

# 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

Usar múltiplos gerenciadores de contexto em uma única linha não é apenas uma questão de sintaxe – é uma forma robusta de gerenciar vários recursos ao mesmo tempo. Isso é especialmente importante ao trabalhar com arquivos, conexões de rede ou locks que sempre devem ser liberados corretamente para evitar vazamentos de recursos ou deadlocks.

Note
Estude Mais
question mark

Qual afirmação descreve corretamente a ordem em que os recursos são liberados ao usar múltiplos gerenciadores de contexto em uma única instrução with?

Selecione a resposta correta

Tudo estava claro?

Como podemos melhorá-lo?

Obrigado pelo seu feedback!

Seção 2. Capítulo 6

Pergunte à IA

expand

Pergunte à IA

ChatGPT

Pergunte o que quiser ou experimente uma das perguntas sugeridas para iniciar nosso bate-papo

Seção 2. Capítulo 6
some-alt