Nuance při práci s vnitřní funkcí v Pythonu
V Pythonu mohou být nejen vnořené
funkce, ale jedna funkce může vracet
druhou. Například, nechť funkce outer
vrací jako výsledek zdrojový kód
funkce inner:
def outer():
def inner():
return '+++'
return inner
Zapišme volání outer do
proměnné res:
res = outer()
print(res)
Po provedení kódu se vypíše objekt s funkcí:
<function outer.<locals>.inner at 0x000001564A212B90>
Pokud zavoláme proměnnou res s
kulatými závorkami, vrátí se zpráva
'+++':
print(res()) # vypíše '+++'
Lze přepsat kód tak, aby se do res
zapsala outer s dvěma kulatými
závorkami - pro volání sebe samé a funkce
inner. Z čehož vyplývá, že lze
zapsat další kulaté závorky
vpravo od vnější funkce podle počtu
funkcí vnořených do ní:
res = outer()()
print(res) # vypíše '+++'
Je dán následující kód:
def outer():
def inner(num):
return num + 2
return inner
res = outer()(3)
print(res)
Řekněte, co se vypíše do konzole.
Je dán následující kód:
def outer():
def inner(txt):
return 'hello, ' + txt
return inner
res = outer()
print(res)
Řekněte, co se vypíše do konzole.