Mutation

Bei Arrays haben wir auch schon gesehen, dass wir den internen Zustand ändern können. Zum Beispiel haben wir factorials[i] = i * factorials[i-1] geschrieben, um in einer Wiederholung mit der Zählvariablen i ein Array von Fakultäten zu erzeugen. Solche sogenannten Mutationen von Objekten können auch in Prozeduren abstrahiert werden. Ein typisches Beispiel ist die Prozedur swap, die zwei Elemente in einem Array vertauscht:

def swap(a,i,j):
  x = a[i]
  a[i] = a[j]
  a[j] = x

Der Rumpf der Prozedur swap enthält zwei Mutationen des in dem Parameter a gespeicherten Arrays.

Wir können unter Verwendung von swap kompliziertere mutierende Prozeduren definieren; zum Beispiel eine, die die Reihenfolge der Elemente eines Arrays umkehrt:

def reverse(a):
  for i in range(0,len(a)//2):
    swap(a, i, len(a)-i-1)