Seite 1 von 1

Python Snippets mit unerwartetem Verhalten

Verfasst: Mittwoch 20. Mai 2015, 09:48
von Kebap
Ein kürzlicher PyCon Vortrag hat mich angeregt, mit dem folgenden Code ein vielleicht uerwartetes Verhalten zu demonstrieren.

Lasst uns in diesem Thread mehr solche unerwartete Verhaltensweisen sammeln!

Code: Alles auswählen

def spam(eggs = [2, 3]):
    eggs.append(5)
    print eggs

spam([2])
spam([3])
spam()
spam()
spam()
Welche Ausgabe würdet ihr erwarten?

Re: Python Snippets mit unerwartetem Verhalten

Verfasst: Mittwoch 20. Mai 2015, 09:58
von Sirius3
@Kebap: ich würde hier nicht von unerwartetem Verhalten sprechen, weil ich würde ja erwarten, dass das passiert, was hier passiert. Das gehört einfach in die gleiche Kategorie wie globale Variablen: nicht machen, wenn man nicht weiß was man macht.

Re: Python Snippets mit unerwartetem Verhalten

Verfasst: Mittwoch 20. Mai 2015, 10:14
von BlackJack
@Sirius3: Naja es ist in sofern unerwartetes Verhalten als das sich in der Vergangenheit gezeigt hat das es nicht wenige Leute gibt die erwarten das Ausdrücke für Defaultargumente bei jedem Aufruf ausgewertet werden, und nicht nur einmal wenn die ``def``-Anweisung ausgeführt wird.