On 09/02/2021 16:17, Antoon Pardon wrote:
Most of us know of the perils of mutable default values. So I came up with the following proof of concept:
[...] def copy_defaults(f): Once you know you need that decorator you won't need it anymore ;)
@copy_defaults def prepare(value, lst = []): for vl in range(value): lst.append(vl) return lst print(prepare(2)) print(prepare(3)) Running the above will produce: [0, 1] [0, 1, 2]
Because of @copy_defaults def prepare(value, lst=[[]]): for vl in range(value): lst[0].append(vl) return lst you may consider changing it to deepcopy_defaults. -- https://mail.python.org/mailman/listinfo/python-list