Функция в функции в 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
.