Pythonin toiminnot antavat minkä tahansa ohjelman käynnissä olevan logiikan optimoidun toteutuksen useita kertoja ongelmattomalla suorituksella. Pythonin sisustajat kiertävät myös konseptia Tässä artikkelissa käymme läpi Sisustajat yksityiskohtaisesti mukaan lukien erilaisia esimerkkejä tässä python-sisustajan opetusohjelmassa. Tässä blogissa käsitellään seuraavia aiheita.
Mitä toimintoja Pythonissa on?
Pythonin sisustajat ovat edistynyt aihe. Joten ennen kuin jatkat, varmista, että olet täysin selvä python-toimintojen käsitteestä. On muutama edellytys, jotka on ymmärrettävä, ennen kuin siirryt sisustajiin Pythonissa.
Ensimmäinen luokka Esineet
Sisäiset toiminnot
Ensiluokkaiset esineet
Pythonissa kaikkea käsitellään esineenä, mukaan lukien kaikki tietotyypit , toimintoja liian. Siksi funktio tunnetaan myös ensimmäisen luokan objektina ja se voidaan välittää argumentteina.
Tarkastellaan esimerkkiä ymmärtämään, miten se toimii.
def func1 (nimi): return f'Hei {name} 'def func2 (name): return f' {name}, Kuinka pärjäät? ' def func3 (func4): palauta func4 ('Hyvä oppija') tulosta (func3 (func1)) tulostaa (func3 (func2))
Tuotos: Hei Hyvä oppija, hyvä oppija, miten menee?
Yllä olevassa esimerkissä olemme käyttäneet saada nimi ja välitetyt funktiot1 ja funktiot2 argumenteiksi funktiossa 3.
Sisäiset toiminnot
Pythonissa on mahdollista määritellä toiminnot toiminnon sisällä. Tätä toimintoa kutsutaan sisäiseksi toiminnoksi. Tässä on esimerkki siitä, kuinka voimme käyttää sisäisiä toimintoja pythonissa.
def func (): print ('ensimmäinen toiminto') def func1 (): print ('ensimmäisen lapsen toiminto') def func2 (): print ('toisen lapsen toiminto') func1 () func2 () func ()
Tuotos: ensimmäinen toiminto ensimmäinen lapsi toiminto toinen lapsi toiminto
Yllä olevassa ohjelmassa ei ole väliä kuinka lapsen toiminnot ilmoitetaan. Lähtö riippuu siitä, miten lapsitoiminnot suoritetaan. Ne on määritelty paikallisesti funktiolla (), joten niitä ei voida kutsua erikseen.
kuinka jäsentää xml - tiedosto Java - sovelluksessa
Jos soitat heille erikseen, saat virheilmoituksen, koska ne on tallennettu nimellä muuttujat sisällä funktiossa () ja sitä voidaan kutsua vain, jos funktio () kutsutaan.
Palautetaan funktio funktiosta
Toiminto on mahdollista palauttaa toisella toiminnolla. Katsokaa alla olevaa esimerkkiä ymmärtääksesi tämän.
def func (n): def func1 (): return 'edureka' def func2 (): return 'python', jos n == 1: return func1 muu: return func2 a = func (1) b = func (2) print ( a ()) tulosta (b ())
Tuotos: edureka python
Sisustajat Pythonissa
Pythonin sisustajat ovat erittäin tehokkaita, jotka muuttavat funktion käyttäytymistä muuttamatta sitä pysyvästi. Se käärii periaatteessa toisen toiminnon ja koska molemmat toiminnot ovat soitettavissa, se palauttaa soitettavan.
Jälkikäteen koristelija kääri toiminnon ja muuttaa sen käyttäytymistä. Katsotaanpa yksinkertainen esimerkki ymmärtääksemme kuinka voimme työskennellä sisustajien kanssa pythonissa.
def-funktio1 (funktio): def-kääre (): tulosta ('hei') -toiminto () print ('tervetuloa python-edurekaan') -palautuskääre def-funktio2 (): tulosta ('Pythonista') -toiminto2 = toiminto1 (toiminto2) -toiminto2 ( )
Tuotos: hei pythonista tervetuloa python edurekaan
Helpottaaksemme asioita ohjelmoijille, meillä on syntaktinen sokeri python-sisustajien kanssa. Katso alla oleva esimerkki ymmärtääksesi, miten se toimii.
def-toiminto1 (toiminto): def-kääre (): tulosta ('hei') -toiminto () tulosta ('miten menee?') paluu kääre @ -toiminto1-def-funktio2 (): tulosta ('pythonista') -toiminto2 ()
Tuotos: hei pythonista miten voit?
Tulos on samanlainen kuin yllä oleva ohjelma, ainoa ero on, että olemme käyttäneet piirakan syntaksia @ -merkillä.
Sisustajien käyttö argumenteilla
Kun sinulla on funktio, jolla on argumentteja, siitä tulee monimutkaisempi sisustusfunktiolle, koska se tarvitsee myös argumentteja ilmoituksessa. Tämän ratkaisemiseksi voimme käyttää * args ja ** kwargs sisäkääre toiminnossa. Katsokaa seuraavaa esimerkkiä ymmärtääksesi tämän.
mikä on * neliömetrissä
def function1 (function): def wrapper (* args, ** kwargs): print ('hei') -toiminto (* args, ** kwargs) print ('tervetuloa edurekaan') return wrapper @ function1 def function2 (nimi): tulosta (f '{nimi}') -toiminto2 ('pythonista')
Tuotos: hei pythonista tervetuloa edurekaan
Arvojen palauttaminen koristeltuista toiminnoista
Katsotaanpa esimerkkiä, kuinka voimme palauttaa arvon koristetusta funktiosta.
def-funktio1 (funktio): def-kääre (* args, ** kwargs): funktio (* args, ** kwargs) tulosta ('se toimi') palautuskääre @ function1 def-funktio2 (nimi): print (f '{nimi} ') function2 (' python ')
Tuotos: python se toimi
Varmista, että palautat käärefunktion argumenteilla virheiden välttämiseksi.
Fancy sisustajat Pythonissa
Nyt kun tiedämme kuinka sisustajat työskentelevät pythonissa, tutkikaa melko monimutkaisia ominaisuuksia muutaman esimerkin avulla.
Luokan sisustajat
On kaksi tapaa koristella luokkaa pythonissa. Ensimmäisessä voit koristella menetelmiä luokan sisällä. Pythonissa on sisäänrakennettuja sisustajia, kuten @classmethod, @staticmethod ja @property. @classmethod ja @staticmethod määrittelevät menetelmät luokan sisällä, joka ei ole yhteydessä mihinkään muuhun luokan esiintymään. @property -ohjelmaa käytetään yleensä luokan määritteen hakijoiden ja asettajien mukauttamiseen. Katsotaanpa katsomaan esimerkkiä tämän ymmärtämiseksi.
luokka Neliö: def __init __ (itse, puoli): itse. puoli = puoli @ omaisuus suoja puoli (itse): palaa itse. puoli @ sivu. asetin def puoli (itse, arvo): jos arvo & gt = 0: itse. arvo muu: tulosta ('virhe') @ominaisuusalueen alue (itse): palauta itsesi_puoli ** 2 @ luokan menetelmä def yksikköneliö (cls): palauta cls (1) s = neliö (5) tulosta (s.side) tulosta (s. alue)
Tuotos: 5 25
Toinen tapa sisustaa luokka on sisustaa koko luokka. Otetaan esimerkki tämän ymmärtämiseksi.
datakursseista tuo tietoluokka @dataclass class Kortit: sijoitus: str puku: str
Luokan sisustaminen ei heijasta sen menetelmiä. Se on melkein samanlainen kuin funktion sisustajan kirjoittaminen, ainoa ero on argumentin luokka funktion sijaan.
Singleton-luokka
Yksittäisryhmällä on vain yksi esiintymä. Pythonissa on paljon singletoneja, mukaan lukien True, None jne. Katsotaanpa esimerkkiä ymmärtämään tätä paremmin.
tuo functools def singleton (cls): @ functools.wraps (cls) def-kääre (* args, ** kwargs): jos ei wrapper.instance: wrapper.instance = cls (* args, ** kwargs) return wrapper.instance -kääre .instance = Ei palaa kääriä @singleton class One: välitä ensin = yksi () sekunti = yksi () tulos (ensimmäinen on toinen)
Tuotos: Totta
'Is' -arvon palauttaminen palauttaa arvon true vain saman esiintymän kohteille. Yllä oleva esimerkki käyttää samaa lähestymistapaa kuin mikä tahansa muu toimintojen sisustaja. Ainoa ero on, että olemme käyttäneet cls: tä funktion sijaan. Myös ensimmäinen ja toinen ovat täsmälleen sama esiintymä.
Pesivät sisustajat
Voit käyttää useita sisustajia pinoamalla ne päällekkäin. Otetaan esimerkki ymmärtääksemme, miten tämä toimii.
@ function1 @ function2 def-funktio (nimi): tulosta (f '{name}')
Näin voimme käyttää sisäkkäisiä sisustajia pinoamalla ne toisiinsa. Yllä olevassa esimerkissä se on vain pelkkä kuvaus, jotta se toimisi, sinun on määriteltävä funktio1 ja funktio2 käärefunktioilla kummankin sisällä.
Väitteet koristelijasta
On aina hyödyllistä välittää argumentteja sisustuksessa. Tarkastellaan seuraavaa esimerkkiä.
tuo functools def toisto (num): def decorator_repeat (func): @ functools.wraps (func) def kääre (* args, ** kwargs): _ alueella (numero): arvo = func (* args, ** kwargs ) return value return wrapper return decorator_repeat @repeat (num = 4) def function (name): print (f '{name}') function ('python')
Tuotos: python python python python
Tämä vie meidät tämän artikkelin loppuun, jossa olemme oppineet esimerkkejä siitä, miten voimme käyttää Decoratoria Pythonissa. Toivon, että olet selvillä kaikesta, mitä sinulle on jaettu tässä Python Decorator -oppaassa
Jos löysit tämän artikkelin Python Decorator -oppaasta, tutustu luotettava verkko-oppimisyritys, jolla on yli 250 000 tyytyväisen oppijan verkosto, levinneenä ympäri maailmaa.
Autamme sinua matkan jokaisessa vaiheessa ja keksimme opetussuunnitelman, joka on suunniteltu opiskelijoille ja ammattilaisille, jotka haluavat olla . Kurssi on suunniteltu antamaan sinulle etumatka Python-ohjelmointiin ja kouluttamaan sinua sekä ydin- että edistyneille Python-käsitteille yhdessä muiden kanssa Kuten
Jos kohtaat kysymyksiä, voit kysyä kaikki kysymyksesi “Python Decorator Tutorial” -kommenttiosasta, ja tiimimme vastaa mielellään.