- Beágyazott metódusnak / függvénynek kell lennie.
- Hozzáférhetőnek kell lennie egy szabad változóhoz a világűrben.
- Vissza kell térnie a külső funkcióról.
Beágyazott funkció
Először meg kell értened, mi a beágyazott módszer. A beágyazott függvény meghatározható egy másik módszerben megadott módszerként. A rekurzív függvények elérhetik a külső hatókör változóit. A nem lokális változók megváltoztatásához kifejezetten nem lokális kulcsszavakkal definiáljuk őket, mivel azok természetüknél fogva csak olvashatók. Tehát először nézze meg a Spyder Python 3-ban végrehajtott beágyazott funkciót.
Két funkciót határoztunk meg: a külső és a belső. A külső függvényben deklaráltunk egy változót, benne némi szövegértékkel.
def external_func ()msg = 'Hy! Aqsa Yasin vagyok
Ezt a változót a belső függvényben nyomtatták ki egy nyomtatási utasítás segítségével. Ezután visszaadják a belső funkciót, amely beágyazott függvény, és ezt követően meghívták a külső függvényt.
def internal_func ()nyomtatás (msg)
return belső_funkció ()
belső_funkció ()
Ha nem a return kulcsszót használja a belső függvény visszaadásához, akkor is ugyanaz az eredmény jelenik meg.
Amikor futtatja ezt az egyszerű kódot, akkor a szöveg megkapja a változó értékeként definiált szöveget 'msg'.
Kimenet: Hy! Aqsa Yasin vagyok
Most definiálja ugyanazt a beágyazott függvényt, visszatérési kulcsszó és változó nélkül 'msg' paraméterben, és ugyanazt a kimenetet fogja kapni.
Kimenet: Hello
Egyszerű bezárási funkció
Használja ugyanazt a kódot, kis változtatással az utolsó két sorban. A húrral 'Helló', a show_msg () metódust hívták meg, és a visszatérő metódust a szóhoz kötötték 'egy másik'. Hívás közben egy másik(), a szöveg 'Helló' még mindig felidézték, míg a show_msg () módszer már futott. Ne felejtse el hozzáadni a változót 'msg' a külső funkción belül.
Amikor futtatja ezt a kódot, megmutatja, hogy a belső funkció, amely a előadás(), a változóhoz van rendelve 'egy másik'.
Kimenet:
Egyszerűen kinyomtathatja a név változóhoz rendelt függvény 'egy másik' mint:
nyomtatás (másik.__név__)
Kibocsátja a függvény nevét.
Kimenet: show
Most, ha ezt a változót függvényként szeretné végrehajtani, hasonlóan a többi módszerhez, megteheti zárójelek hozzáadásával és így hívhatja:
másik = show_msg ("Hello")egy másik()
egy másik()
Ezt annyiszor hívhatja, ahányszor csak akarja.
Amikor futtatja ezt a kódot, valami ilyesmit jelenít meg:
Kimenet:
Helló
Helló
Helló
Most már láthatja, hogy a külső függvény végrehajtásának befejezése után a belső függvény még mindig emlékszik a változókra és egyéb dolgokra, amelyeket a helyi térben hoztak létre vagy definiáltak.
Zárási funkció a paraméterek használatával
Most hozzáadtunk paramétereket, miközben egy változót adtunk át a külső függvényben:
def show_msg (msg)A külső függvényparaméterbe továbbított értéket egy változóhoz rendeljük, amelyet ezen külső függvényen belül definiálunk:
Üzenet = üzenetAdjon át néhány string értéket az újonnan létrehozott változókban az utolsó sorban:
func1 = show_msg ('Szia')func2 = show_msg ('Hello')
Most ezeket a funkciókat kell így hívnia:
func1 ()func2 ()
A következő kimenetet kapja, amelyet a spyder szerkesztő képe mutat:
A Pythonon belül ezt a folyamatot, amellyel bármilyen adat (szia vagy Hello, ehhez a szcenárióhoz) csatol a szkripthez, elnevezése Bezárás.
Egyszerű szorzás Python bezárással
Két funkciót definiáltunk. Az egyik külső, amelynek szorzója van definiálva, és a belső, amelyben az érték átkerül a függvény meghívása közben. A külső függvényben deklaráltunk egy változót, amelyben meghatározott szorzóértéket adtunk át. Ez a szorzóérték 'n' meg van szorozva valamilyen értékkel 'x' amelyet a nyomtatott utasításban átadnak a belső funkciónak. Ezután visszaküldi a belső függvényt, amely beágyazott függvény, és ezt követően a nyomtatási utasításokban egymás után hívták meg a változókat.
def out_multiply (n):def in_multiply (x):
vissza x * n
vissza sokszorosan
Az új változó hozzárendelt némi értéket, amelyet át kell adni a külső függvény paraméterében. Ez az érték el lesz mentve a változóban 'n', amely a külső függvényben meghatározott szorzó:
times3 = out_multiply (3)times5 = out_multiply (5)
Ezekhez a változókhoz több értéket rendelünk, amelyek a 'x' a belső függvényben definiált változó, amelyet szorzóval kell szorozni 'n'. Amikor kinyomtatjuk az 'idők' nevű változót, egy egész értékű függvényt 'x' a zárójelben hozzárendelve meg fog szorozni a külső függvény értékével 'n'.
Az első fog kimenet 27 nyomtatási utasítás végrehajtása közben, mert változó 'n' van 3 szorzóként, és megadtuk 9 más egész számként, amelyet meg kell szorozni.
nyomtatás (alkalommal3 (9))A második lesz kimenet 15 míg a print utasítás végrehajtása, mert változó 'n' van 3 szorzóként, és megadtuk 5 más egész számként, amelyet meg kell szorozni.
nyomtatás (times5 (3))Az utolsó lesz kimenet 30 nyomtatási utasítás futtatása közben, mert rekurzív módon hívta meg az időket a változó függvényéhez. Az első alkalom, az idők megtörténtek 'n' miután 3 szorzóként, amelyet egész számra szorozunk 2. Szorzáskor kinyomtatja 6. Ezt a 6-ot értékként fogjuk használni, majd argumentumként átadjuk a times 'változó függvénynek, ahol a 'n' változó szorzó az 5. Így amikor 5 szorozva 6 kimenetet fog adni 30.
nyomtatás (times5 (times3 (2)))
A kimenetet a Spyder szerkesztő konzolján láthatja.
Következtetés
A bezárások megtilthatják a globális értékek használatát, és az adatok elrejtését is lehetővé tehetik. Objektum- vagy entitásorientált megközelítést nyújthat a kérdéshez is. Remélhetőleg az útmutató követése után elsajátíthatja a Python bezárásának alapjait.