Qu'est-ce qu'une opération idempotente ?
En informatique, une opération idempotente est une opération qui n'a pas d'effet supplémentaire si elle est appelée plus d'une fois avec les mêmes paramètres d'entrée. Par exemple, la suppression d'un élément d'un ensemble peut être considérée comme une opération idempotente sur cet ensemble.
En mathématiques, une opération idempotente est une opération où f(f(x)) = f(x). Par exemple, la fonction abs()
est idempotente car abs(abs(x)) = abs(x)
pour tout x
.
Ces définitions légèrement différentes peuvent être réconciliées en considérant que x dans la définition mathématique représente l'état d'un objet, et f est une opération qui peut muter cet objet. Par exemple, considérons le Python set
et sa méthode discard
. La méthode discard
supprime un élément d'un ensemble, et ne fait rien si l'élément n'existe pas. Ainsi :
my_set.discard(x)
a exactement le même effet que de faire deux fois la même opération :
my_set.discard(x)
my_set.discard(x)
Les opérations idempotentes sont souvent utilisées dans la conception des protocoles réseau, où une demande d'exécution d'une opération est garantie au moins une fois, mais peut aussi se produire plus d'une fois. Si l'opération est idempotente, il n'y a pas de mal à l'exécuter deux fois ou plus.
Voir l'article de Wikipédia sur [l'idempotence] (http://en.wikipedia.org/wiki/Idempotence) pour plus d'informations.
La réponse ci-dessus comportait précédemment des exemples incorrects et trompeurs. Les commentaires ci-dessous écrits avant avril 2014 font référence à une ancienne révision.
Une opération idempotente produit le résultat dans le même état même si vous l'appelez plusieurs fois, à condition de passer les mêmes paramètres.