Sisäkkäiset ja useat kontekstinhallitsijat
Pyyhkäise näyttääksesi valikon
Kun työskentelet useiden resurssien kanssa Pythonissa – esimerkiksi avaat useamman tiedoston samanaikaisesti – on tärkeää varmistaa, että jokainen resurssi otetaan käyttöön ja vapautetaan oikein. Tässä kohtaa sisäkkäiset ja useat kontekstinhallitsijat ovat erityisen hyödyllisiä. Yllä oleva video esittelee kaksi lähestymistapaa: with-lauseiden sisäkkäisen käytön sekä useiden kontekstinhallitsijoiden käytön yhdellä rivillä.
Sisäkkäiset with-lauseet tarkoittavat, että yksi with-lohko sijoitetaan toisen sisään. Tämä on hyödyllistä, kun yhden resurssin käyttö riippuu toisesta. Esimerkiksi voit lukea yhdestä tiedostosta ja kirjoittaa toiseen, varmistaen, että molemmat tiedostot hallitaan oikein:
with open('input.txt', 'r') as infile:
with open('output.txt', 'w') as outfile:
for line in infile:
outfile.write(line.upper())
Python mahdollistaa kuitenkin myös molempien tiedostojen avaamisen yhdellä with-lauseella, erottamalla jokainen kontekstinhallitsija pilkulla. Tämä lähestymistapa tekee koodista selkeämpää ja takaa, että jokainen resurssi vapautetaan päinvastaisessa järjestyksessä kuin ne otettiin käyttöön. Tämä tarkoittaa, että viimeisenä avattu resurssi suljetaan ensimmäisenä, kun lohko päättyy.
# 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
Useiden kontekstinhallitsijoiden käyttäminen yhdellä rivillä ei ole pelkkää syntaktista helpotusta – se on vankka tapa hallita useita resursseja samanaikaisesti. Tämä on erityisen tärkeää työskenneltäessä tiedostojen, verkkoyhteyksien tai lukkojen kanssa, jotka on aina vapautettava oikein resurssivuotojen tai deadlockien välttämiseksi.
Python Context Managers -kurssi
Kiitos palautteestasi!
Kysy tekoälyä
Kysy tekoälyä
Kysy mitä tahansa tai kokeile jotakin ehdotetuista kysymyksistä aloittaaksesi keskustelumme