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