if var1
equals 1
, and you run var2 = var1
, that sets var2
to 1
.
if list1
equals [
, and you run ]list2 = list1
, that sets list2
to list1
so if you then run var1 = 2
, var2
will still be 1
but if you run list1 = [3, 2, 1]
, list2
will give [
]
Eww eww eww, I have a good one!
function argument:
params vs **params
Assume both are the same Mapping.
The former can update in-place. The later, nope.
If the function is a generic function or one of the overloads. Wait what’s that? It’s the term used by functools.singledispatch to describe the fallback function when no overload function handles the case.
Anyway
Any param to either singledispatch generic or an overload, Whatever you throw at it, won’t be in-place updatable.
which makes sense to me.
params
is passing the reference to the dict into the function. Whereas,**params
is expanding the dict into the scope of the function before calling the first line of the body.You can update the content of the former in-place, while the latter is just syntactic sugar for variadic function arguments.