Python Snippets mit unerwartetem Verhalten

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
Benutzeravatar
Kebap
User
Beiträge: 687
Registriert: Dienstag 15. November 2011, 14:20
Wohnort: Dortmund

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?
MorgenGrauen: 1 Welt, 8 Rassen, 13 Gilden, >250 Abenteuer, >5000 Waffen & Rüstungen,
>7000 NPC, >16000 Räume, >200 freiwillige Programmierer, nur Text, viel Spaß, seit 1992.
Sirius3
User
Beiträge: 17738
Registriert: Sonntag 21. Oktober 2012, 17:20

@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.
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.
Antworten