Kontekstinhallintaohjelmat (with-lausekkeet)
Tutustukaa kontekstinhallintaohjelmien mahdollisuuksiin resurssien hallinnassa.
Kontekstinhallintaohjelmat (with-lausekkeet) on ilmainen Python Academy-oppitunti CoddyKitissä. Tämä on oppitunti 3/5. Voit lukea koko oppitunnin alta ilmaiseksi ja harjoitella sen jälkeen käytännössä selaimessa sisäänrakennetulla koodieditorilla ja ympäri vuorokauden käytettävissä olevan tekoälytuutorin avulla. Oppitunti kuuluu Python Academy-oppimispolkuun, ja edistymisesi synkronoituu verkon ja CoddyKit-sovelluksen välillä. Python Academy-kurssilla on yhteensä 5 oppituntia.
Johdatus kontekstinhallintaobjekteihin
Pythonin kontekstinhallintaobjektit auttavat hallitsemaan resursseja, kuten tiedostoja, verkkoyhteyksiä ja tietokantayhteyksiä. Ne varmistavat, että resurssit varataan ja vapautetaan asianmukaisesti, vaikka tapahtuisi virhe.
Tässä oppitunnissa opitte käyttämään ja luomaan kontekstinhallintaobjekteja with-lauseen avulla.

Mikä on kontekstinhallintaobjekti?
Kontekstinhallintaobjekti on rakenne, jonka avulla resursseja voidaan varata ja vapauttaa tehokkaasti. Se käyttää with-lausetta resurssienhallintakoodin ympärillä.
# Using a context manager with a file
with open("example.txt", "r") as file:
content = file.read()
print(content) # File is automatically closed after the blockMiksi kontekstinhallintaobjekteja käytetään?
Kontekstinhallintaobjektit auttavat:
- Varmistamaan resurssien asianmukaisen vapauttamisen.
- Vähentämään resurssivuotojen riskiä.
- Kirjoittamaan selkeämpää ja helpommin luettavaa koodia.
Sisäänrakennetut kontekstinhallintaobjektit
Python sisältää useita sisäänrakennettuja kontekstinhallintaobjekteja, kuten:
open: Hallitsee tiedostotoimintoja.decimal.localcontext: Hallitsee desimaalitoimintojen tarkkuusasetuksia.
Mukautetun kontekstinhallintaobjektin luominen
Voitte luoda mukautetun kontekstinhallintaobjektin käyttämällä luokkaa, jossa on __enter__- ja __exit__-metodit:
# Custom context manager class
class CustomManager:
def __enter__(self):
print("Entering the context")
return self
def __exit__(self, exc_type, exc_value, traceback):
print("Exiting the context")
with CustomManager() as manager:
print("Inside the context")Poikkeusten käsittely kontekstinhallintaobjekteissa
Mukautetut kontekstinhallintaobjektit voivat käsitellä poikkeuksia __exit__-metodin avulla:
# Handling exceptions in a context manager
class ExceptionManager:
def __enter__(self):
print("Entering the context")
return self
def __exit__(self, exc_type, exc_value, traceback):
if exc_type:
print(f"An exception occurred: {exc_value}")
print("Exiting the context")
return True # Suppresses the exception
with ExceptionManager():
raise ValueError("Something went wrong")Contextlib-moduulin käyttäminen
contextlib-moduuli sisältää apuohjelmia, jotka helpottavat kontekstinhallintaobjektien luomista:
# Using contextlib to create a context manager
from contextlib import contextmanager
@contextmanager
def custom_context():
print("Entering the context")
yield
print("Exiting the context")
with custom_context():
print("Inside the context")Kontekstinhallintaobjektien parhaat käytännöt
Noudata seuraavia parhaita käytäntöjä:
- Käyttäkää sisäänrakennettuja kontekstinhallintaobjekteja aina kun mahdollista.
- Käsitelkää poikkeukset asianmukaisesti mukautetuissa kontekstinhallintaobjekteissa.
- Käyttäkää
contextlib-moduulia yksinkertaisemman syntaksin saavuttamiseksi.
Kontekstinhallintaobjektien yleiset virheet
Välttäkää seuraavia virheitä:
with-lauseen käyttämättä jättäminen resurssienhallinnassa.__exit__-metodin virheellinen toteuttaminen mukautetuissa kontekstinhallintaobjekteissa.__exit__-metodissa tapahtuvien poikkeusten huomiotta jättäminen.
Mitä opitte?
Tässä oppitunnissa opitte:
- Mitä kontekstinhallintaobjektit ovat ja miten ne toimivat
with-lauseen kanssa. - Miten mukautettuja kontekstinhallintaobjekteja luodaan käyttämällä
__enter__- ja__exit__-metodeja. - Miten
contextlib-moduulia käytetään kontekstinhallintaobjektien luomisen helpottamiseen.
Hienosti tehty! Siirrytään seuraavaan aiheeseen.

Opi Python tekoälytuutorin avulla — ilmaiseksi
Kirjoita ja suorita oikeaa koodia selaimessa, saa välitöntä apua tekoälytuutorilta ympäri vuorokauden ja jatka siitä, mihin jäit, verkossa tai sovelluksessa.
- Kurssit
- 76
- Oppitunnit
- 320
Usein kysytyt kysymykset
Onko oppitunti ”Kontekstinhallintaohjelmat (with-lausekkeet)” ilmainen?
Kyllä – oppitunnin ”Kontekstinhallintaohjelmat (with-lausekkeet)” koko tekstin voi lukea täällä verkossa ilmaiseksi. Jos haluat harjoitella interaktiivisesti sisäänrakennetulla koodieditorilla ja ympäri vuorokauden käytettävissä olevan tekoälytuutorin avulla sekä avata koko Python Academy-kurssin, päivitä CoddyKit PROhon. Python Academy-kurssilla on yhteensä 5 oppituntia.
Mitä opin oppitunnilla ”Kontekstinhallintaohjelmat (with-lausekkeet)”?
Tutustukaa kontekstinhallintaohjelmien mahdollisuuksiin resurssien hallinnassa. Harjoittelet Python Academy-aihetta koodilla, jonka suoritat suoraan selaimessa. Ympäri vuorokauden käytettävissä oleva tekoälytuutori vastaa kysymyksiisi oppitunnin aikana.
Tarvitsenko kokemusta aloittaakseni Python Academy-opiskelun?
Aiempi kokemus ei ole tarpeen. CoddyKitin Python Academy-oppimispolku sopii vasta-alkajista edistyneisiin, joten voit aloittaa tästä tai alusta ja edetä omaan tahtiisi. Tämä on oppitunti 3/5.
Kuinka kauan ”Kontekstinhallintaohjelmat (with-lausekkeet)”-oppitunnin suorittaminen kestää?
Useimmat CoddyKitin oppitunnit kestävät noin 5–10 minuuttia. Jokainen oppitunti on lyhyt ja interaktiivinen, joten edistyt tasaisesti ja voit jatkaa siitä, mihin jäit – sekä verkossa että sovelluksessa.
Voinko kirjoittaa ja suorittaa koodia tällä Python Academy-oppitunnilla?
Kyllä. Jokainen Python Academy-oppitunti sisältää sisäänrakennetun koodieditorin, joten voit kirjoittaa ja suorittaa oikeaa koodia suoraan selaimessa ja saada välitöntä palautetta tekoälyltä – paikallista asennusta ei tarvita.
Kaikki tämän kurssin oppitunnit
- Dekoraattorit
- Generaattorit
- Kontekstinhallintaohjelmat (with-lausekkeet)
- Koostelmat (listat, joukot ja sanakirjat)
- Iteraattorit ja iteroitavat oliot