- Musí to byť vnorená metóda / funkcia.
- Musí mať prístup k voľnej premennej vo vesmíre.
- Musí sa vrátiť od vonkajšej funkcie.
Vnorená funkcia
Najprv musíte pochopiť, čo je vnorená metóda. Vnorenú funkciu je možné definovať ako metódu špecifikovanú v rámci inej metódy. Rekurzívne funkcie môžu dosiahnuť premenné vonkajšieho rozsahu. Ak chcete zmeniť nelokálne premenné, špecificky ich definujeme ako nelokálne prostredníctvom nelokálnych kľúčových slov, pretože sú svojou povahou iba na čítanie. Najprv sa teda pozrite na vnorenú funkciu vykonanú v Spyder Python 3.
Definovali sme dve funkcie: vonkajšiu a vnútornú. Vo vonkajšej funkcii sme deklarovali premennú, v ktorej je nejaká textová hodnota.
def outer_func ()msg = 'Hy! Som Aqsa Yasin '
Táto premenná bola vo vnútornej funkcii vytlačená pomocou príkazu na tlač. Potom sa vráti vnútorná funkcia, ktorá je vnorenou funkciou, a potom sa volá vonkajšia funkcia.
def internal_func ()tlač (správa)
návrat internal_func ()
inner_func ()
Ak nepoužívate kľúčové slovo return na vrátenie vnútornej funkcie, vráti stále rovnaký výsledok.
Keď spustíte tento jednoduchý kód, vráti vám text definovaný ako hodnota v premennej 'msg'.
Výstup: Hy! Som Aqsa Yasin
Teraz definujte rovnaký typ vnorenej funkcie bez návratového kľúčového slova a odovzdávajúcej premennej 'msg' v parametri a získate rovnaký výstup.
Výstup: Dobrý deň
Funkcia jednoduchého zatvárania
Použite rovnaký kód, s malými zmenami na posledných dvoch riadkoch. S povrázkom 'Ahoj', the show_msg () bola vyvolaná metóda a vrátená metóda bola viazaná na slovo 'ďalší'. Počas telefonovania ďalší(), text 'Ahoj' sa stále pripomínalo, zatiaľ čo show_msg () metóda už bola spustená. Nezabudnite pridať premennú 'msg' v rámci vonkajšej funkcie.
Keď spustíte tento kód, ukáže sa, že vnútorná funkcia, ktorá je a šou(), bol priradený k premennej 'ďalší'.
Výkon:
Môžete si jednoducho vytlačiť názov funkcie priradenej k premennej 'ďalší' ako:
tlač (iná.__názov__)
Na výstup bude uvedený názov funkcie.
Výstup: ukážka
Teraz, ak chcete vykonať túto premennú ako funkciu, podobne ako iné metódy, môžete to urobiť pridaním zátvoriek a ich volaním takto:
another = show_msg ("Hello")ďalší()
ďalší()
Môžete to nazvať toľkokrát, koľkokrát chcete.
Po spustení tohto kódu sa zobrazí niečo ako toto:
Výkon:
Ahoj
Ahoj
Ahoj
Teraz vidíte, že aj po dokončení vykonávania vonkajšej funkcie si vnútorná funkcia stále pamätá premenné a ďalšie veci, ktoré boli vytvorené alebo definované v lokálnom priestore.
Uzatváracia funkcia pomocou parametrov
Teraz sme pridali parametre pri odovzdávaní premennej vo vonkajšej funkcii ako:
def show_msg (msg)Hodnota odovzdaná do parametra vonkajšej funkcie bude priradená k premennej definovanej v rámci tejto vonkajšej funkcie ako:
Správa = správaDo novovytvorených premenných na posledný riadok vložte niektoré hodnoty reťazcov, napríklad:
func1 = show_msg ('Ahoj')func2 = show_msg ('Hello')
Teraz musíte takto volať tieto funkcie:
func1 ()func2 ()
Získate nasledujúci výstup zobrazený na obrázku editora spyder:
V rámci Pythonu sa tento proces, pomocou ktorého sa ku skriptu pripoja všetky údaje (pre tento scenár Ahoj alebo Ahoj), nazýva Uzavretie.
Jednoduché množenie pomocou Python Closure
Definovali sme dve funkcie. Jeden je vonkajší, ktorý má definovaný multiplikátor, a vnútorný, v ktorom bude hodnota odovzdaná pri volaní funkcie. Vo vonkajšej funkcii sme deklarovali premennú, v ktorej bola odovzdaná definovaná hodnota multiplikátora. Táto hodnota multiplikátora 'n' bol znásobený určitou hodnotou 'X' ktorý sa odovzdá vo výkaze tlače vnútornej funkcii. Potom sa vráti vnútorná funkcia, ktorá je vnorenou funkciou, a potom sa v tlačových príkazoch premenné volajú jedna po druhej.
def out_multiply (n):def in_multiply (x):
návrat x * n
návrat in_multiply
Teraz nová premenná priradila určitú hodnotu, ktorá sa má odovzdať v parametri vonkajšej funkcie. Táto hodnota sa uloží do premennej 'n', čo je multiplikátor definovaný vo vonkajšej funkcii:
times3 = out_multiply (3)times5 = out_multiply (5)
Týmto premenným bude priradených viac hodnôt, ktoré sa uložia do súboru 'X' premenná definovaná vo vnútornej funkcii, ktorú je potrebné vynásobiť multiplikátorom 'n'. Keď tlačíme premennú s názvom „times“, funkciu s celočíselnou hodnotou 'X' priradený v zátvorke spôsobí, že sa hodnota násobí hodnotou vonkajšej funkcie 'n'.
Prvý bude výstup 27 pri vykonávaní tlačového výpisu, pretože premenná 'n' má 3 ako multiplikátor a dali sme 9 ako ďalšie celé číslo, ktoré sa má vynásobiť.
tlač (krát 3 (9))Druhá bude výstup 15 pri vykonávaní príkazu na tlač, pretože premenná 'n' má 3 ako multiplikátor a dali sme 5 ako ďalšie celé číslo, ktoré sa má vynásobiť.
tlač (krát5 (3))Posledná bude výstup 30 pri spustení príkazu na tlač, pretože rekurzívne nazýval times to function variable. Prvýkrát, čas má 'n' majúce 3 ako multiplikátor, ktorý sa vynásobí na celé číslo 2. Pri násobení bude mať výstup 6. Teraz bude táto 6 použitá ako hodnota, potom odovzdaná ako argument do premennej funkcie times ', kde 'n' variabilný multiplikátor je 5. Takže keď 5 sa vynásobí 6 to bude výstup 30.
tlač (krát5 (krát3 (2)))
Výstup môžete vidieť v konzole editora Spyder.
Záver
Uzávery môžu zakázať používanie globálnych hodnôt a môžu mať určitú formu skrývania údajov. Mohlo by to tiež poskytnúť objektovo alebo subjektovo zameraný prístup k danej problematike. Dúfajme, že po vykonaní tejto príručky budete schopní získať základné informácie o ukončení Pythonu.