Dekoratører i Python

Dekoratører i Python
Pythons dekoratører er en ekstremt nyttig funksjon da de lar programmererne tilpasse hvordan en metode eller klasse oppfører seg. Dekoratører gjør oss i stand til å innkapsle en annen funksjon for å endre funksjonaliteten midlertidig mens vi utvider funksjonaliteten til den innpakkede metoden. La oss først forstå noen få konsepter som vil være nyttige mens vi lærer om dekoratører før vi kommer for dypt inn i dem.

Når skal du bruke en Python -dekoratør

Hver gang du vil endre en funksjons oppførsel uten å endre selve metoden, bruker du en dekoratør. Å legge til logger, analysere ytelse, utføre hurtigbufring, bekrefte autorisasjon og andre oppgaver er noen få bemerkelsesverdige eksempler. Når du trenger å utføre en identisk kode på mange prosesser, kan du imidlertid bruke en. Du trenger ikke å skrive duplikatprogrammene som et resultat.

Forutsetninger for å forstå dekoratører

Vi må først forstå noen få grunnleggende Python -konsepter før vi lærer om dekoratører.

    • Funksjoner kan brukes eller leveres som parametere i Python fordi de oppfører seg som klasser og objekter.
    • Et element av objekttypen er en funksjon.
    • Funksjonen kan beholdes i en variabel.
    • Funksjonen brukes som et argument i en annen funksjon.
    • Brukere kan returnere en annen metode fra en funksjon.
    • De kan holdes i datastrukturer som matriser og hasjbord.

For en god forståelse, bør du vurdere følgende tilfeller:

Eksempel 1:

Vi vil behandle funksjonene som objekter i dette tilfellet. Vi vil gi en variabel til ropmetoden. Dette genererer et andre navn, kjefter som peker på funksjonsobjektet som er spesifisert av Shout -metoden, men som ikke kaller funksjonen.


I begynnelsen av programmet definerer vi Shout () -funksjonen. Her passerer vi “T” -attributtet som parameteren for Shout () -funksjonen. Denne funksjonen returnerer teksten i øvre format. Vi bruker den øvre () -funksjonen. Deretter kaller vi metoden Print () for å vise linjen. Innenfor denne funksjonen kaller vi Shout () -funksjonen. Vi gir teksten som vi ønsker å vises på skjermen som utdata. Vi setter verdien av Shout () -funksjonen lik Yell () -funksjonen. I den siste linjen skriver vi verdien av Yell -metoden slik at vi bruker metoden Print (). Her spesifiserer vi også "god morgen" -verdien som argumentet for Yell () -funksjonen.

Eksempel 2:

Vi gir metoden til en annen funksjon som en parameter. Her aksepterer hilsenmetoden en annen funksjon som et argument (rop og hvisking). Hilsenfunksjonen kaller deretter andre definerte funksjoner som ble spesifisert som en inngang.


Shout () -funksjonen er definert i begynnelsen av programmet. Her er argumentet for shout -funksjonen "T" -elementet. Dette gir teksten tilbake i store bokstaver fordi vi benyttet den øvre () funksjonen. Whisper () -metoden er definert i følgende trinn. Denne funksjonen sender ut teksten som ble gitt som et argument i det lavere formatet. Hilsen () -metoden brukes nå. Her gir vi "func" -parameteren som er definert i følgende linje. Vi spesifiserer verdien av "func" -attributtet som vi må skildre på konsollen. Til slutt bruker vi print () -funksjonen for å vise verdiene til både rop- og hviskemetodene.


Forekomstene som tidligere er nevnt, viser hovedbegrepene som kreves for å forstå dekoratørene. Nå skal vi utføre noen tilfeller for å demonstrere bruken av dekoratører.

Dekoratører

Som allerede sagt, kan dekoratører brukes til å endre en funksjon eller klasse oppførsel. Funksjoner er definert i innpakningsfunksjonen når du bruker dekoratører, hvor de sendes som parametere til andre funksjoner.

Eksempel 3:

Denne illustrasjonen kan illustrere hvordan en dekoratør endrer en funksjons oppførsel.


Først av alt definerer vi dekoratøren. Deretter kaller vi Inner1 () -funksjonen. Det er en innpakningsmetode der parameteren kalles. Innenfor denne funksjonen bruker vi print () -funksjonen. Deretter kaller vi den faktiske funksjonen i innpakningsfunksjonen. Vi bruker igjen print () -metoden.I neste linje. Vi definerer en morsom () -metode som skal kalles inne i innpakningen. Nå passerer vi "Fun_Usused" i dekoratøren for å endre oppførselen. For å avslutte koden, påkaller vi metoden.

Eksempel 4:

La oss gå videre til et annet tilfelle der vi kan bestemme hvor lang tid en funksjon tar å utføre ved å bruke en dekoratør.


Her importerer vi de nødvendige overskriftsfilene som inkluderer tid og matematikk. "Time" -biblioteket er ansvarlig for å beregne "Time" og "matematikk" -modulen er ansvarlig for alle matematiske operasjoner. Vi bruker en dekoratør for å beregne varigheten som er tatt av funksjonen. Vi definerer cal_time () -metoden. Denne funksjonen inneholder enhver nødvendig funksjon som en parameter. Vi bruker Inner1 () -funksjonen. Vi gir *args og ** kwargs som funksjonene til funksjonen. I neste trinn lagrer vi varigheten før vi implementerer funksjonen. Vi kaller tiden () -metoden tilknyttet "Time" -modulen. Deretter skaffer vi oss tiden etter å ha utført metoden. Vi bruker igjen tiden () -funksjonen og verdien lagres i "slutt" -variabelen.

Print () -metoden brukes for å vise den beregnede tiden. Nå beregner vi fabrikken slik at vi definerer factorial () -metoden. Vi passerer det spesifikke nummeret som parameter. Vi setter en 3 sekunders verdi for søvn () -funksjonen fordi det tar veldig lite tid slik at vi kan merke den faktiske forskjellen. PRINT () -funksjonen brukes for å vise faktorialet til nummeret. Til slutt påkaller vi fabrikken ved å gi antallet vi ønsker å beregne fabrikken.

Konklusjon

I denne guiden diskuterte vi hvordan du kan gi en funksjon til en variabel, hvordan du behandler funksjoner som objekter, hvordan du kan returnere funksjoner og hvordan du kan gi en funksjon som en parameter til en annen funksjon. Sammen med flere tilfeller demonstrerte vi også hvordan vi skal konstruere og bruke Python -dekoratørene. Vi implementerte koden som benytter dekoratørene for å endre en funksjons oppførsel. Og i en annen illustrasjon brukte vi en dekoratør for å bestemme hvor lang tid en funksjon tar å utføre.