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.
Python Context Managers kursus
Tak for dine kommentarer!
Spørg AI
Spørg AI
Spørg om hvad som helst eller prøv et af de foreslåede spørgsmål for at starte vores chat