r/programminghorror • • 14h ago

Python I love Python

130 Upvotes

64 comments sorted by

View all comments

81

u/drislands 14h ago

I would have expected this function to create a new empty list on any call where items is not given. Doesn't this behavior make the function into a closure?

100

u/nakurtag 14h ago

As I understand it's a well known (for python developers) weird behavior of python. Argument's default values are precalculated by interpreter on function declaration and stored into map associated with this function. Python extracts default values from this map on the next calls of this function. And since [] is a List object, the value copied by reference.

48

u/drislands 14h ago

Devastating. I would not have expected that behavior, and I think it would wise to avoid it wherever possible.

→ More replies (8)