First page Back Continue Last page Overview Image

Listen als Default-Parameter

>>> def spammer(bag=[]):

... bag.append("spam")

... return bag

...

>>> spammer()

['spam']

>>> spammer()

['spam', 'spam']

>>> spammer()

['spam', 'spam', 'spam']

>>>

Man ruft spammer ohne den optionalen Parameter auf und würde eigentlich erwarten, dass der Defaultwert eingesetzt wird, so wie es beim ersten Aufruf geschieht!

Erklärung: Der Default-Wert wird nur bei der Definition der Funktion zugewiesen nicht mehr beim Aufruf. Danach wird immer wieder auf die gleiche sich verändernde Liste zugegriffen.