Fonction dans une fonction en Python
En Python, il est possible de déclarer des fonctions
à l'intérieur d'autres fonctions. Supposons que nous ayons une fonction externe
outer, à l'intérieur de laquelle se trouve
la fonction inner :
def outer():
def inner():
pass
L'exemple ci-dessus semble assez
simple. Cependant, il arrive souvent que
dans le corps de la fonction outer, en dehors de
inner, d'autres opérations soient
exécutées. Pour simplifier le code, on pourrait
sortir inner dans le bloc externe,
mais cette fonction ne sera utilisée
qu'une seule fois et seulement à l'intérieur de la fonction
outer. Il n'est donc pas judicieux de
la sortir.
Prenons un exemple où une liste est passée
à la fonction outer. Et à l'aide de
la fonction inner, l'élément numérique
de la liste sera élevé au carré.
Pour cela, après la fonction inner,
nous déclarons une liste vide res, dans
laquelle s'accumuleront les éléments
élevés au carré dans une boucle :
def outer(lst):
def inner(num):
return num ** 2
res = []
for el in lst:
res.append(inner(el))
return res
Appelons la fonction outer,
passons-lui un paramètre de liste et affichons
le résultat dans la console :
print(outer([2, 3, 5])) # affichera [4, 9, 25]
Écrivez une fonction externe et une fonction interne dont le travail conjoint affichera chaque élément de type chaîne de caractères de la liste avec une majuscule.
Les fonctions suivantes sont donné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
Réécrivez le code de manière à ce que func1
soit une fonction interne de func2.