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

Reply via email to