Nästlade och multipla kontexthanterare
Svep för att visa menyn
När du arbetar med flera resurser i Python – till exempel när du öppnar mer än en fil samtidigt – behöver du ofta säkerställa att varje resurs hanteras korrekt, både vid öppning och stängning. Här blir nästlade och multipla kontext-hanterare särskilt användbara. Videon ovan visar två tillvägagångssätt: att nästla with-satser och att använda flera kontext-hanterare på en och samma rad.
Att nästla with-satser innebär att placera ett with-block inuti ett annat. Detta är användbart när användningen av en resurs är beroende av en annan. Till exempel kan du läsa från en fil och skriva till en annan, och samtidigt säkerställa att båda filerna hanteras korrekt:
with open('input.txt', 'r') as infile:
with open('output.txt', 'w') as outfile:
for line in infile:
outfile.write(line.upper())
Python tillåter dock även att du öppnar båda filerna i en enda with-sats, där varje kontext-hanterare separeras med ett kommatecken. Detta gör koden mer överskådlig och garanterar att varje resurs stängs i omvänd ordning mot hur de öppnades. Det innebär att den sista resursen du öppnar är den första som stängs när blocket avslutas.
# 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
Att använda flera kontext-hanterare på en rad är inte bara syntaktisk förenkling – det är ett robust sätt att hantera flera resurser samtidigt. Det är särskilt viktigt när du arbetar med filer, nätverksanslutningar eller lås som alltid måste frigöras korrekt för att undvika resursläckor eller deadlocks.
Tack för dina kommentarer!
Fråga AI
Fråga AI
Fråga vad du vill eller prova någon av de föreslagna frågorna för att starta vårt samtal