Функцыя ў функцыі ў Python
У Python унутры адных функцый можна аб'яўляць
іншыя. Хай у нас ёсць знешняя функцыя
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.