One of the most common pitfalls for new Python developers is using mutable objects (like lists or dictionaries) as default argument values.
The Evaluation Rule
In Python, default argument values are evaluated only once, when the function is defined (def statement is executed). They are not re-evaluated each time the function is called.
The Trap
If you use a mutable object as a default, that single object instance is shared across all calls that omit that argument.