Funkcja w funkcji w Pythonie
W Pythonie wewnątrz jednych funkcji można deklarować
inne. Załóżmy, że mamy funkcję zewnętrzną
outer, wewnątrz której znajduje się
funkcja inner:
def outer():
def inner():
pass
Powyższy przykład wygląda dość prosto.
Jednak często zdarzają się sytuacje, gdy
w ciele funkcji outer oprócz
inner wykonywane są jeszcze inne
operacje. Dla uproszczenia kodu można
by wynieść inner do zewnętrznego bloku
kodu, jednak ta funkcja będzie użyta
tylko raz i tylko wewnątrz funkcji
outer. Dlatego nie ma sensu wynosić jej poza
jej granice.
Przyjrzyjmy się przykładowi, gdy do funkcji
outer przekazywana jest lista. A za pomocą
funkcji inner element liczbowy
listy będzie podnoszony do kwadratu.
W tym celu po funkcji inner
deklarujemy pustą listę res, w
której będą gromadzone elementy
podniesione do kwadratu w pętli:
def outer(lst):
def inner(num):
return num ** 2
res = []
for el in lst:
res.append(inner(el))
return res
Wywołajmy funkcję outer,
przekażmy jej parametr lista i wypiszmy
wynik do konsoli:
print(outer([2, 3, 5])) # wypisze [4, 9, 25]
Napisz zewnętrzną i wewnętrzną funkcję, których wspólna praca będzie wypisywać każdy łańcuchowy element listy z wielkiej litery.
Dane są funkcje:
def func1(num):
if num > 0:
num += 2
return num
def func2(iter):
res = []
for el in iter:
res.append(func1(el))
return res
Przepisz kod tak, aby func1
była funkcją wewnętrzną dla func2.