Parametrisoitujen Dekorointien Kirjoittaminen
Pyyhkäise näyttääksesi valikon
Kun haluat, että dekorointisi käyttäytyy eri tavoin syötteen perusteella, sinun tulee luoda parametrisoitu dekorointi. Toisin kuin tavalliset dekoroinnit, jotka ottavat vain funktion argumenttina, parametrisoidut dekoroinnit hyväksyvät omat argumenttinsa, jolloin voit ohjata niiden toimintaa dynaamisesti. Tämä on erityisen hyödyllistä, kun haluat käyttää samaa dekorointia useissa tilanteissa eri asetuksilla.
Parametrisoidun dekoroinnin rakenne:
- Uloin funktio vastaanottaa dekoroinnin argumentit;
- Välikerroksen funktio on varsinainen dekorointi, joka ottaa koristeltavan funktion;
- Sisäfunktio käärii ja ohjaa alkuperäisen funktion suoritusta.
Tämä kerroksittainen lähestymistapa mahdollistaa argumenttien välittämisen dekoroinnille, jolloin ne ovat käytettävissä, kun koristeltua funktiota kutsutaan.
12345678910111213141516171819202122# Outer function: accepts the decorator argument 'times' def repeat(times): # The actual decorator that takes the function to be decorated def decorator(func): # Inner function: wraps and controls the execution of 'func' def wrapper(*args, **kwargs): result = None # Call the original function 'times' times for _ in range(times): result = func(*args, **kwargs) return result # Return the wrapper to replace the original function return wrapper # Return the decorator function return decorator # Apply the repeat decorator @repeat(3) def say_hello(): print("Hello!") say_hello()
1. Miten parametrisoitu dekorointi eroaa tavallisesta dekoroinnista?
2. Miksi dekoratorille kannattaa välittää argumentteja?
Oliko kaikki selvää?
Kiitos palautteestasi!
Osio 4. Luku 3
Kysy tekoälyä
Kysy tekoälyä
Kysy mitä tahansa tai kokeile jotakin ehdotetuista kysymyksistä aloittaaksesi keskustelumme
Osio 4. Luku 3