Python Academy · Oppitunti

Dekoraattorit

Opetelkaa käyttämään dekoraattoreita funktioiden muokkaamiseen tai laajentamiseen.

Oppitunti 1/511 vaihetta

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.

Dekoraattorit — kuvitus 1

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.

Dekoraattorit — kuvitus 11
Aloita maksutta

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

  1. Dekoraattorit
  2. Generaattorit
  3. Kontekstinhallintaohjelmat (with-lausekkeet)
  4. Koostelmat (listat, joukot ja sanakirjat)
  5. Iteraattorit ja iteroitavat oliot
← Takaisin: Python Academy