Oppikaa tekoälyä Pythonilla · Oppitunti

Dekoraattorit

Oppikaa käyttämään dekoraattoreita funktioiden muokkaamiseen tai laajentamiseen

Oppitunti 1/511 vaihetta

Dekoraattorit on ilmainen Oppikaa tekoälyä Pythonilla-oppitunti CoddyKitissä. Tämä on oppitunti 1/5. Voit lukea tästä oppimispolusta kokonaan mitkä tahansa 3 oppituntia ilmaiseksi — sen jälkeen CoddyKit PRO avaa kaikki oppitunnit sekä käytännön harjoittelun sisäänrakennetulla koodieditorilla ja ympäri vuorokauden toimivalla tekoälytuutorilla. Oppitunti kuuluu Oppikaa tekoälyä Pythonilla-oppimispolkuun, ja edistymisesi synkronoituu verkon ja CoddyKit-sovelluksen välillä. Oppikaa tekoälyä Pythonilla-kurssilla on yhteensä 5 oppituntia.

Johdanto dekoratoreihin

Dekoraattorit ovat Pythonin tehokas ominaisuus, jonka avulla funktioiden tai metodien toimintaa voidaan muuttaa. Niitä käytetään usein toiminnallisuuden lisäämiseen funktioihin ilman, että niiden koodia tarvitsee muuttaa.

Tässä oppitunnissa opit, mitä dekoraattorit ovat, miten niitä käytetään ja miten luot omia dekoraattoreita.

Dekoraattorit — kuvitus 1

Mikä on dekoratori?

Dekoratori 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()

Miten dekoratorit toimivat

Kun käytät dekoratoria, Python korvaa alkuperäisen funktion dekoratorin palauttamalla käärefunktiolla.

# 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 argumenttien kanssa

Dekoraattorit voivat toimia argumentteja ottavien funktioiden kanssa, kun käärefunktiossa käytetään *args- ja **kwargs-parametreja:

# 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

Voit käyttää yhdessä funktiossa useita dekoratoreita. 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()

Parametristen decoratorien luominen

Parametriset decoratorit ottavat vastaan argumentteja ja mahdollistavat joustavamman toiminnallisuuden:

# 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()

Decoratorien yleiset käyttötapaukset

Decoratoreita käytetään yleensä seuraaviin tarkoituksiin:

  • Funktiokutsujen ja niiden argumenttien kirjaamiseen.
  • Funktioiden suoritusajan mittaamiseen.
  • Käyttöoikeuksien hallintaan, esimerkiksi käyttäjän oikeuksien tarkistamiseen.
  • Tulosten välimuistiin tallentamiseen suorituskyvyn parantamiseksi.

Pythonin sisäänrakennetut decoratorit

Python sisältää joitakin sisäänrakennettuja decoratoreita, kuten:

  • @staticmethod: Määrittää staattisen metodin.
  • @classmethod: Määrittää luokkametodin.
  • @property: Määrittää property-metodin.

Yleisiä virheitä dekoratorien kanssa

Tässä on muutamia virheitä, joita kannattaa välttää:

  • Alkuperäisen funktion nimen ja dokumentaatiomerkkijonon säilyttämättä jättäminen (käytä functools.wraps-toimintoa).
  • Dekoraattorien käyttäminen tarpeettomasti yksinkertaisissa tehtävissä.
  • Argumenttien käsittelyn unohtaminen käärefunktiossa.

Mitä opimme?

Tässä oppitunnissa opitte:

  • Mitä dekoraattorit ovat ja miten ne toimivat Pythonissa.
  • Miten luodaan ja käytetään perusmuotoisia, parametreja käyttäviä ja ketjutettuja dekoraattoreita.
  • Dekoraattorien yleiset käyttötapaukset ja Pythonin sisäänrakennetut dekoraattorit.

Hienosti tehty! Siirtykäämme 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
53
Oppitunnit
225

Usein kysytyt kysymykset

Onko oppitunti ”Dekoraattorit” ilmainen?

Kyllä — voit lukea täällä verkossa kokonaan ilmaiseksi mitkä tahansa Oppikaa tekoälyä Pythonilla-oppimispolun 3 oppituntia, myös oppitunnin “Dekoraattorit”. Sen jälkeen CoddyKit PRO avaa kaikki oppitunnit sekä interaktiiviset harjoitukset sisäänrakennetulla koodieditorilla ja ympäri vuorokauden toimivalla tekoälytuutorilla. Oppikaa tekoälyä Pythonilla-kurssilla on yhteensä 5 oppituntia.

Mitä opin oppitunnilla ”Dekoraattorit”?

Oppikaa käyttämään dekoraattoreita funktioiden muokkaamiseen tai laajentamiseen Harjoittelet Oppikaa tekoälyä Pythonilla-aihetta koodilla, jonka suoritat suoraan selaimessa. Ympäri vuorokauden käytettävissä oleva tekoälytuutori vastaa kysymyksiisi oppitunnin aikana.

Tarvitsenko kokemusta aloittaakseni Oppikaa tekoälyä Pythonilla-opiskelun?

Aiempi kokemus ei ole tarpeen. CoddyKitin Oppikaa tekoälyä Pythonilla-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ä Oppikaa tekoälyä Pythonilla-oppitunnilla?

Kyllä. Jokainen Oppikaa tekoälyä Pythonilla-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. Kontekstinhallitsijat (with-lauseet)
  4. Comprehension-rakenteet (listat, joukot ja sanakirjat)
  5. Iteraattorit ja iteroitavat oliot
← Takaisin: Oppikaa tekoälyä Pythonilla