Definisjon: dekoratør er et designmønster i Python. Det er en funksjon som tar en annen funksjon som et argument, legger litt funksjonalitet til den uten å endre den, og returnerer en annen funksjon.
Dette kalles "(@)" og plasseres før vi definerer en funksjon som vi vil dekorere.
Syntaks:
@decorator navn
Funksjonsdefinisjon
For å forstå dekoratører, må vi kjenne konseptene nedenfor.
Funksjoner er førsteklasses objekter. Det betyr at en funksjon kan sendes som et argument, kan returneres fra en annen funksjon, kan tilordnes en variabel, kan defineres i en annen funksjon. For en bedre forståelse, se eksemplene nedenfor.
Her har trinnfunksjonen bestått som et argument
Eksempel1.PY:
Produksjon:
>> Python eksempel1.py
Eksempel2.PY:
Produksjon:
>> Python Eksempel2.py
Her sa Say_wish -funksjonen tilbake fra ønskefunksjonen
Eksempel3.PY:
Produksjon:
>> Python eksempel3.py
Eksempel4.PY:
Produksjon:
>> Python Eksempel4.py
Lukking:
Python tillater en nestet funksjon for å få tilgang til det ytre omfanget av den omsluttende funksjonen.
def hilsen (melding):Eksempel5.PY:
Produksjon:
>> Python Eksempel5.py
Etter å ha forstått konseptene ovenfor nå, vil vi skrive et dekoratøreksempel.
EX1: Her vil vi dekorere meldingsfunksjonen. Skrive ut MSG inne i **** uten å endre den opprinnelige funksjonen, i.e., Meldingsfunksjon.
#Decorator StartEksempel6.PY:
Produksjon:
>> Python Eksempel6.py
I den enkleste formen kan vi plassere dekoratør på toppen av funksjonsdefinisjonen og kalle funksjonen som vist nedenfor:
Her uansett hvilken streng vi vil dekorere inni ***, bruk denne dekoratøren.
Produksjon:
Flere dekoratører:
Vi kan ha flere dekoratører for en enkelt funksjon. Her blir dekoratøren brukt i den rekkefølgen vi ringte.
Syntaks:
@dekorator2
@dekorator1
Funksjonsdefinisjon
Her blir 1. dekoratør påført, deretter 2. dekoratør.
Passerende argumenter til dekoratørfunksjoner:
Vi kan gi argumenter til innpakningsfunksjonen. Argumentene som ble gitt til funksjonen vi ønsker å dekorere.
Eks:
def deco_wish (funksjon):Eksempel7.PY:
Produksjon:
>> Python Eksempel7.py
Pass variabelt antall argumenter til dekoratørfunksjon:
Vi kan bestå et hvilket som helst antall argumenter som bruker *args (ikke-nøkkelord argumenter som tall) og ** kwargs (søkeordargumenter som en ordbok). Begge er posisjonsargumenter og lagrer argumentene i Args og Kwargs -variabler.
Merk: Her kan vi bruke hvilket som helst navn i stedet for args og kwargs, men disse navnene anbefales å bruke.
Eks:
def dec_var_args (FUNTION):Eksempel8.PY:
Produksjon:
>> Python Eksempel8.py
EX2: Anta at vi har 2 funksjoner
Funksjon1: Beregn summen av tall fra den gitte listen
Funksjon2: Multipliser hvert nummer med 2 og legg dem til den gitte listen over tall
Hvis vi ønsker å beregne tiden som er tatt av hver for utførelse, kan det gjøre det på to måter
Se kode som er løst ved hjelp av dekoratør:
#Decorator StartEksempel9.PY:
Produksjon:
>> Python Eksempel9.py
Ovennevnte dekoratør kan brukes til beregning av utførelsestid for noen av funksjonene. Ved å bruke en dekoratør, kan vi unngå gjentatt kode når vi har et krav til å beregne utførelsestiden for å plassere dekoratøren over funksjonsdefinisjonen.
Konklusjon:
Dekoratører endrer funksjonaliteten til en funksjon/metode uten å endre den opprinnelige koden til funksjonen blir dekorert. Ved å bruke dette kan vi unngå å skrive gjentatt kode. Å kjenne dekoratørkonseptet vil gjøre oss sterke i Python. Vi kan bruke dekoratør i tilfellene nedenfor: