Функција у функцији у Пајтону
У Пајтону унутар једних функција могу се декларисати
друге. Нека имамо спољну функцију
outer, унутар које се налази
функција inner:
def outer():
def inner():
pass
Горњи пример изгледа довољно
једноставно. Међутим, често се јављају ситуације када
у телу функције outer поред
inner извршавају се и друге
операције. За поједностављење кода могло
би се извући inner у спољни блок
кода, међутим ова функција ће бити искоришћена
само једанпут и само унутар функције
outer. Зато је извлачење изван
њене границе без смисла.
Хајде да размотримо пример, када у функцију
outer прослеђује листа. А помоћу
функције inner нумерички елемент
листе ће се подизати на квадрат.
За то после функције inner
декларишемо празну листу res, у
којој ће се накупљати елементи,
подигнути на квадрат у петљи:
def outer(lst):
def inner(num):
return num ** 2
res = []
for el in lst:
res.append(inner(el))
return res
Хајде да позовемо функцију outer,
проследимо јој параметар листу и прикажимо
резултат у конзоли:
print(outer([2, 3, 5])) # исписаће [4, 9, 25]
Напишите спољну и унутрашњу функцију, које заједно приказују сваки стринг елемент листе са почетним великим словом.
Дате су функције:
def func1(num):
if num > 0:
num += 2
return num
def func2(iter):
res = []
for el in iter:
res.append(func1(el))
return res
Препишите код тако да func1
буде унутрашња функција за func2.