Fonction à effet de bord☘
Dans le paragraphe sur la distinction entre les variables locales et les variables globales, nous avons vu que les paramètres des fonctions sont considérés comme des variables locales à la fonction.
Est-ce toujours le cas avec un type muable (comme le type list
) en
paramètre plutôt qu'avec un type immuable (comme les types int
ou str
) ?
Illustration☘
Copiez/collez/exécutez le code de la fonction définie ci-dessous :
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
|
Vérifiez, en utilisant la fonction id()
, que votre objet T1
est bien le
même objet (dont le contenu a changé) avant l'appel à la fonction
prolonger()
et après cet appel.
Remarque
Le langage Python propose en fait déjà en natif une telle fonction.
Voir par exemple cette page.
Définition
Extrait de wikipedia
En informatique, une fonction est dite à effet de bord (traduction mot à mot de l'anglais « side effect », dont le sens est plus proche de « effet secondaire ») si elle modifie un état en dehors de son environnement local, c'est-à-dire si elle a une interaction observable avec le monde extérieur autre que renvoyer une valeur.
Par exemple,
- les fonctions qui modifient une variable non locale ou un argument muable passé par référence,
- les fonctions qui effectuent des opérations d'entrées-sorties
- ou les fonctions appelant d'autres fonctions à effet de bord.
Souvent, ces effets compliquent la lisibilité du comportement des programmes et/ou nuisent à la réutilisabilité des fonctions et procédures.
Le caractère muable des objets de type list
amène assez naturellement à
écrire de telles fonctions à effet de bord, c'est-à-dire des fonctions qui
modifient le tableau passé en argument sans créer de nouveau tableau.