def sammeln(wert, liste=[]):
liste.append(wert)
return liste
Zweimal ohne zweite Angabe aufgerufen, und die alte Eingabe hängt noch drin. Die Liste hat ein besseres Gedächtnis als ich. Warum wird sie nicht bei jedem Aufruf neu gebaut?
Das ist der übliche Ansatz: if liste is None: liste = []. Diese neue Liste wird dann in genau diesem Aufruf erzeugt. Eine ausdrücklich übergebene Liste wird weiterhin verändert; das sollte zur Funktion passen.