Nuansy pri práci s vnútornou funkciou v Pythone
V Pythone môžu byť nielen vnorené
funkcie, ale aj jedna funkcia môže vrátiť
inú. Napríklad, nech funkcia outer
vráti ako výsledok zdrojový kód
funkcie inner:
def outer():
def inner():
return '+++'
return inner
Zapíšme volanie outer do
premennej res:
res = outer()
print(res)
Po vykonaní kódu sa vypíše objekt s funkciou:
<function outer.<locals>.inner at 0x000001564A212B90>
Ak zavoláme premennú res s
okrúhlymi zátvorkami, vráti sa správa
'+++':
print(res()) # vypíše '+++'
Kód je možné prepísať tak, aby do res
sa zapísala outer s dvomi okrúhlymi
zátvorkami - pre volanie seba samej a funkcie
inner. Z čoho vyplýva, že je možné
zapisovať dodatočné okrúhle zátvorky
napravo od vonkajšej funkcie podľa počtu,
vnorených do nej funkcií:
res = outer()()
print(res) # vypíše '+++'
Daný je nasledujúci kód:
def outer():
def inner(num):
return num + 2
return inner
res = outer()(3)
print(res)
Povedzte, čo sa vypíše do konzoly.
Daný je nasledujúci kód:
def outer():
def inner(txt):
return 'hello, ' + txt
return inner
res = outer()
print(res)
Povedzte, čo sa vypíše do konzoly.