Aller au contenu

09 Cours Fonctions Compléments

Pour aller plus loin sur les paramètres⚓︎

Utilisation de valeurs par défaut⚓︎

🐍 Script Python
def somme(x, y=1):
    return x + y

print(somme(1, 2))
📋 Texte
3

Si sa valeur n’est pas spécifiée lors de l’appel, le paramètre y prend la valeur par défaut (ici : 1)

🐍 Script Python
print(somme(4))
📋 Texte
5

Remarque. Les paramètres ayant une valeur par défaut doivent être placés en dernier.

Utilisation des paramètres par leur nom⚓︎

Si les paramètres sont explicitiment nommés lors de l’appel, leur ordre peut être changé :

🐍 Script Python
print(somme(y = 7, x = 4))
📋 Texte
11

Objet fonctions⚓︎

Une fonction définie est un objet que l'on peut utiliser, passer en paramètre, etc.\

On considère un cas où on a une fonction, qui prend en paramètre une fonction.
Par exemple,

🐍 Script Python
def applique(f, x):
    return f(x)

On peut appeler cette fonction en lui passant en paramètre une fonction nommée définie préalablement :

🐍 Script Python
def f1(x):
    return 2*x+1
def f2(x):
    return 3*x**2
applique(f1, 5) ### renvoie f1(5) = 11
applique(f2, 5) ### renvoie f2(5) = 75

Cela fonction aussi pour les fonctions natives :

🐍 Script Python
applique(max, [1, 2, 3]) ### renvoie max([1, 2, 3]) = 3

Fonctions lambdas⚓︎

Les lambdas, en Python, sont de petites fonctions anonymes, soumises à une syntaxe plus restrictive mais plus concise que les fonctions Python normales.
C'est une syntaxe Python pour définir une fonction sans la nommer.
La syntaxe se rapproche de la notation mathématique "on définit une fonction qui à \(x\) associe \(3x - 2\), qui se note en mathématiques "on définit une fonction \(x \longmapsto 3x - 2\).

En Python, on écrit : lambda x : 3*x - 2.

Une fonction lambda peut également prendre plusieurs paramètres :

🐍 Script Python
lambda x, y: x + y

🐍 Script Python
print((lambda x, y: x + y)(2, 5)) #7

On peut utiliser ce type de fonction lambda en paramètre de la fonction applique précédente :

🐍 Script Python
applique(lambda x : 2*x+1, 5) ### renvoie 2*5+1 = 11

Bonnes pratiques en programmation⚓︎

  • Découper le code en fonctions de maximum une page, avec des noms explicites sur leur rôle
  • Un code que l'on a écrit plusieurs fois doit être factorisé par une fonction
  • Ne pas hésiter à extraire les expressions booléennes dans des fonctions avec un nom explicite
  • Ne pas hésiter à extraire les boucles vers des fonctions

Factoriser du code⚓︎

par exemple, au lieu de :

🐍 Script Python
print("Lundi, j'amène mes affaires et je suis attentif en classe.")
print("Mardi, j'amène mes affaires et je suis attentif en classe.")
print("Mercredi, j'amène mes affaires et je suis attentif en classe.")
print("Jeudi, j'amène mes affaires et je suis attentif en classe.")
print("Vendredi, j'amène mes affaires et je suis attentif en classe.")

On peut créer une fonction :

🐍 Script Python
def affiche_ligne(jour):
    print(jour+", j'amène mes affaires et je suis attentif en classe.")
puis l'appeler :
🐍 Script Python
affiche_ligne("Lundi")
affiche_ligne("Mardi")
affiche_ligne("Mercredi")
affiche_ligne("Jeudi")
affiche_ligne("Vendredi")

Remarque : Ce qui est commun aux différentes instructions se retrouve écrit une unique fois, un peu comme \(x\) n'est écrit qu'une seule fois lorsqu'on factorise l'expression \(x \times y + x \times z = x \times (y + z)\).