Dekoraattorit
Opetelkaa käyttämään dekoraattoreita funktioiden muokkaamiseen tai laajentamiseen.
Dekoraattorit on ilmainen Python Academy-oppitunti CoddyKitissä. Tämä on oppitunti 1/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 dekoraattoreihin
Dekoraattorit ovat Pythonin tehokas ominaisuus, jonka avulla voitte muuttaa funktioiden tai metodien toimintaa. Niitä käytetään usein toiminnallisuuden lisäämiseen funktioihin muuttamatta niiden koodia.
Tässä oppitunnissa opitte, mitä dekoraattorit ovat, kuinka niitä käytetään ja kuinka luotte omia dekoraattoreita.

Mikä on dekoraattori?
Dekoraattori on funktio, joka ottaa toisen funktion syötteenä ja palauttaa uuden funktion, johon on lisätty toiminnallisuutta. Sitä käytetään usein syntaksin @decorator_name kanssa.
# Basic example of a decorator
def decorator(func):
def wrapper():
print("Before the function call")
func()
print("After the function call")
return wrapper
@decorator
def say_hello():
print("Hello!")
say_hello()Kuinka dekoraattorit toimivat
Kun käytätte dekoraattoria, Python korvaa alkuperäisen funktion dekoraattorin palauttamalla kääretoiminnolla.
# How decorators work
def decorator(func):
def wrapper():
print("Wrapper called")
func()
return wrapper
@decorator
def greet():
print("Greetings!")
print(greet.__name__) # Outputs: wrapper
greet()Dekoraattorien käyttäminen argumentteja sisältävien funktioiden kanssa
Dekoraattorit voivat toimia argumentteja vastaanottavien funktioiden kanssa käyttämällä *args- ja **kwargs-parametreja kääretoiminnossa:
# Decorator for functions with arguments
def decorator(func):
def wrapper(*args, **kwargs):
print(f"Arguments: {args}, {kwargs}")
return func(*args, **kwargs)
return wrapper
@decorator
def add(a, b):
return a + b
print(add(3, 5))Useiden dekoratorien ketjuttaminen
Voitte käyttää yhdessä funktiossa useita dekoratoreja. Ne otetaan käyttöön siinä järjestyksessä kuin ne esiintyvät ylhäältä alaspäin:
# Chaining multiple decorators
def decorator1(func):
def wrapper():
print("Decorator 1")
func()
return wrapper
def decorator2(func):
def wrapper():
print("Decorator 2")
func()
return wrapper
@decorator1
@decorator2
def greet():
print("Hello!")
greet()Parametroitujen dekoratorien luominen
Parametroidut dekoratorit vastaanottavat argumentteja ja mahdollistavat joustavammat toiminnot:
# Parameterized decorator
def repeat(times):
def decorator(func):
def wrapper(*args, **kwargs):
for _ in range(times):
func(*args, **kwargs)
return wrapper
return decorator
@repeat(3)
def say_hello():
print("Hello!")
say_hello()Dekoratorien yleiset käyttötapaukset
Dekoratoreja käytetään yleisesti seuraaviin tarkoituksiin:
- Funktiokutsujen ja niiden argumenttien kirjaaminen lokiin.
- Funktioiden suoritusajan mittaaminen.
- Käyttöoikeuksien hallinta, esimerkiksi käyttäjän käyttöoikeuksien tarkistaminen.
- Tulosten tallentaminen välimuistiin suorituskyvyn parantamiseksi.
Pythonin sisäänrakennetut dekoratorit
Python sisältää useita sisäänrakennettuja dekoratoreja, kuten:
@staticmethod: Määrittää staattisen metodin.@classmethod: Määrittää luokkametodin.@property: Määrittää property-metodin.
Dekoratorien yleiset virheet
Välttäkää seuraavia virheitä:
- Alkuperäisen funktion nimen ja dokumenttimerkkijonon säilyttämättä jättäminen (käyttäkää
functools.wraps-toimintoa). - Dekoratorien tarpeeton käyttäminen yksinkertaisissa tehtävissä.
- Argumenttien käsittelyn unohtaminen wrapper-funktiossa.
Mitä opitte?
Tässä oppitunnissa opitte:
- Mitä dekoratorit ovat ja miten ne toimivat Pythonissa.
- Miten luodaan ja käytetään perusmuotoisia, parametroitua ja ketjutettuja dekoratoreja.
- Dekoratorien yleiset käyttötapaukset ja Pythonin sisäänrakennetut dekoratorit.
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 ”Dekoraattorit” ilmainen?
Kyllä – oppitunnin ”Dekoraattorit” 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 ”Dekoraattorit”?
Opetelkaa käyttämään dekoraattoreita funktioiden muokkaamiseen tai laajentamiseen. 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 1/5.
Kuinka kauan ”Dekoraattorit”-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