Fonction dans une fonction
Bonsoir,
j'ai découvert un truc qui me paraissait être "mauvais" mais au final qui n'est pas mal du tout. Jusqu'à présent, pratiquant majoritairement de la POO, je n'avais pas besoin de définir des fonctions dans des fonctions comme dans le 1er code ci-dessous proposé par un collègue.
Je préfère malgré tout le 2nd pour des raisons de lisibilité mais je vois tout l'intérêt de cette technique pour notamment cacher de fonctions internes d'un package qui n'ont aucune utilité pour l'utilisateur du dit package.
MA QUESTION. Ceci étant que pensez-vous de cette pratique ? Existe-t-il des effets indésirables ?
CODE AVEC FONCTION DANS FONCTION
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24
| def recherche(x, L):
d, f = 0, len(L)-1
def r(deb, fin):
if deb > fin:
return "Elément non trouvé"
t = (deb + fin)//2
if x == L[t]:
return t
elif x < L[t]:
return r(deb, t-1)
else:
return r(t+1, fin)
return r(d, f)
L = [3, 5, 8, 9, 15, 45, 123, 125]
print(recherche(45, L)) |
CODE SANS FONCTION DANS FONCTION
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26
| def r(deb, fin):
global x, L
if deb > fin:
return "Elément non trouvé"
t = (deb + fin)//2
if x == L[t]:
return t
elif x < L[t]:
return r(deb, t-1)
else:
return r(t+1, fin)
def recherche(x, L):
d, f = 0, len(L) - 1
return r(d, f)
x = 45
L = [3, 5, 8, 9, 15, 45, 123, 125]
print(recherche(45, L)) |