Was ist eine idempotente Operation?
In der Datenverarbeitung ist eine idempotente Operation eine Operation, die keine zusätzlichen Auswirkungen hat, wenn sie mehr als einmal mit denselben Eingabeparametern aufgerufen wird. So kann beispielsweise das Entfernen eines Elements aus einer Menge als idempotente Operation an der Menge betrachtet werden.
In der Mathematik ist eine idempotente Operation eine, bei der f(f(x)) = f(x). Zum Beispiel ist die Funktion abs()
idempotent, weil abs(abs(x)) = abs(x)
für alle x
.
Diese leicht unterschiedlichen Definitionen lassen sich miteinander vereinbaren, wenn man bedenkt, dass x in der mathematischen Definition den Zustand eines Objekts darstellt und f eine Operation ist, die dieses Objekt verändern kann. Betrachten wir zum Beispiel das Python set
und seine discard
-Methode. Die discard
-Methode entfernt ein Element aus einer Menge und tut nichts, wenn das Element nicht existiert. So:
my_set.discard(x)
hat genau die gleiche Wirkung wie die doppelte Ausführung der gleichen Operation:
my_set.discard(x)
my_set.discard(x)
Idempotente Operationen werden häufig bei der Entwicklung von Netzwerkprotokollen verwendet, bei denen eine Anforderung zur Durchführung einer Operation garantiert mindestens einmal, aber auch mehr als einmal erfolgen kann. Wenn die Operation idempotent ist, kann es nicht schaden, die Operation zwei- oder mehrmals auszuführen.
Weitere Informationen finden Sie im Wikipedia-Artikel über [Idempotenz] (http://en.wikipedia.org/wiki/Idempotence).
Die obige Antwort enthielt früher einige falsche und irreführende Beispiele. Die nachstehenden Kommentare, die vor April 2014 geschrieben wurden, beziehen sich auf eine ältere Revision.
Egal, wie oft Sie den Vorgang aufrufen, das Ergebnis ist immer dasselbe.
Eine idempotente Operation liefert das Ergebnis im gleichen Zustand, auch wenn Sie sie mehrmals aufrufen, vorausgesetzt, Sie übergeben dieselben Parameter.