Função dentro de função em Python
Em Python, é possível declarar outras funções
dentro de uma função. Suponha que temos uma função externa
outer, dentro da qual existe uma função
inner:
def outer():
def inner():
pass
O exemplo acima parece bastante simples.
No entanto, muitas vezes há situações em que,
no corpo da função outer, além da
inner, outras operações também são
executadas. Para simplificar o código, seria
possível mover a inner para fora do bloco,
mas essa função será usada apenas uma vez
e apenas dentro da função outer.
Portanto, não faz sentido movê-la para fora.
Vamos considerar um exemplo em que uma lista
é passada para a função outer.
E com a ajuda da função inner, o elemento
numérico da lista será elevado ao quadrado.
Para isso, após a função inner,
declaramos uma lista vazia res, na
qual os elementos elevados ao quadrado serão
acumulados em um loop:
def outer(lst):
def inner(num):
return num ** 2
res = []
for el in lst:
res.append(inner(el))
return res
Vamos chamar a função outer,
passar uma lista como parâmetro e exibir
o resultado no console:
print(outer([2, 3, 5])) # exibirá [4, 9, 25]
Escreva uma função externa e uma função interna, cujo trabalho conjunto exibirá cada elemento de string da lista com a primeira letra maiúscula.
Dadas as funções:
def func1(num):
if num > 0:
num += 2
return num
def func2(iter):
res = []
for el in iter:
res.append(func1(el))
return res
Reescreva o código de modo que func1
seja uma função interna de func2.