Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Lære Indlejrede og Multiple Kontekstadministratorer | Advanced File Handling & Context Managers
Python Strukturel Programmering

Indlejrede og Multiple Kontekstadministratorer

Stryg for at vise menuen

Når du arbejder med flere ressourcer i Python – såsom at åbne mere end én fil ad gangen – skal du ofte sikre, at hver ressource bliver korrekt erhvervet og frigivet. Her er indlejrede og flere context managers særligt nyttige. Videoen ovenfor viser to tilgange: indlejring af with-udsagn og brug af flere context managers på én linje.

Indlejring af with-udsagn betyder, at man placerer et with-blok inde i en anden. Dette er nyttigt, når brugen af én ressource afhænger af en anden. For eksempel kan du læse fra én fil og skrive til en anden, hvilket sikrer, at begge filer håndteres korrekt:

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

Python tillader dog også, at du åbner begge filer i et enkelt with-udsagn, hvor hver context manager adskilles med et komma. Denne tilgang gør din kode mere overskuelig og garanterer, at hver ressource frigives i omvendt rækkefølge af, hvordan de blev erhvervet. Det betyder, at den sidste ressource, du åbner, er den første, der lukkes, når blokken afsluttes.

# 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

Brug af flere context managers på én linje er ikke blot syntaktisk pynt – det er en robust måde at håndtere flere ressourcer på én gang. Det er især vigtigt, når du arbejder med filer, netværksforbindelser eller låse, der altid skal frigives korrekt for at undgå ressource-lækager eller deadlocks.

Note
Læs mere
question mark

Hvilket udsagn beskriver korrekt rækkefølgen, hvori ressourcer frigives, når du bruger flere context managers i et enkelt with-udsagn?

Vælg det korrekte svar

Var alt klart?

Hvordan kan vi forbedre det?

Tak for dine kommentarer!

Sektion 2. Kapitel 6

Spørg AI

expand

Spørg AI

ChatGPT

Spørg om hvad som helst eller prøv et af de foreslåede spørgsmål for at starte vores chat

Sektion 2. Kapitel 6
some-alt