I'm from a C++ background so this problem seems a little absurd to me: Let's suppose I have a function:
def scale(data, factor):
for val in data:
val *= factor
This doesn't work as intended, if I pass a list, it changes nothing, but
def scale(data, factor):
for index, val in enumerate(data):
data[index] *= factor
and lst = [val * factor for val in lst]
works properly.
How does Python handle argument passing? How do I know if the actual reference, or alias is passed?