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?
 
     
     
     
    