Fonctions d’ordre supérieur

On parle de fonction d’ordre supérieur quand cette fonction :

  • prend une ou plusieurs fonctions en argument

  • renvoie une fonction

Chacune de ces deux propriétés est possible en Python. Il s’agit souvent d’un moyen rendre un code plus modulaire en séparant les logiques internes.

[1]:
# Un exemple de fonctions que l'on peut composer entre elles


def pain(func):
    def wrapper():
        print("</''''''''''\>")
        func()
        print("<\__________/>")
    return wrapper


def garniture(func):
    def wrapper():
        print(" OO tomate OO ")
        func()
        print(" ~~ salade ~~ ")
    return wrapper


def jambon():
    print(" -- jambon -- ")


sandwich = pain(garniture(jambon))

print("Bonne appétit")
print()
sandwich()
Bonne appétit

</''''''''''\>
 OO tomate OO
 -- jambon --
 ~~ salade ~~
<\__________/>

Exercices

Ecrire le corps de la fonction suivante:

def deriv(func, epsilon=1e-6):
    """ renvoie la fonction dérivée de func

    Le calcul de la dérivée est fait par différence finie:

        f_prime(x) = ( f(x+epsilon) - f(x) ) / epsilon

    """
    pass