ich war gerade dabei eine (einfache) Liste an die Funktion zu übergeben. In diesem Zusammenhang ging ich dann wie folgt vor:
Code: Alles auswählen
>>> def func(list):
... print list
>>> foo_list = [0,1,1,2,3,5,8]
>>> func(foo_list)
Und dabei stieß ich auf den Begriff "Seiteneffekt". Ich las auf einigen Seiten, dass dies ein schlechter Programmierstil sei, und man dies so nicht handhaben sollte. Und soweit ich es auch verstanden habe, wird hierbei nicht die Liste als solches übergeben, sondern nur der Verweis auf die Liste. Das heißt, in Wirklichkeit wurde die Liste gar nicht an die Funktion übergeben, sondern nur der Verweis wo die Liste sich befindet. Viel mehr wurde dafür plädiert, dass man die Liste als eine Kopie an die Funktion übergeben solle. Etwa so:
Code: Alles auswählen
>>> def func(list):
... print list
...
>>> foo_list = [0,1,1,2,3,5,8]
>>> func(foo_list[:])
Soweit so gut, aber irgendwie habe ich das Gefühl, diesen Sachverhalt noch nicht ganz verinnerlicht zu haben. Was ist nun so "schlecht" an einem Seiteneffekt? Wieso sollte man den sogenannten "Seiteneffekt" verhindern? Welche Nachteile erkaufe ich mir? Und wieso sollte man eine Kopie an die Funktion übergeben? Wieso nicht den Verweis?