Hi Henning,

I am not a python expert. But it works because list is a mutable type.

https://stackoverflow.com/questions/986006/how-do-i-pass-a-variable-by-reference/986145#986145

Some Link content:

Arguments are passed by assignment. The rationale behind this is two fold:

the parameter passed in is actually a reference to an object (but the reference 
is passed by value)
some data types are mutable, but others aren't
So:

If you pass a mutable object into a method, the method gets a reference to that 
same object and you can mutate it to your heart's delight, but if you rebind 
the reference in the method, the outer scope will know nothing about it, and 
after you're done, the outer reference will still point at the original object.

If you pass an immutable object to a method, you still can't rebind the outer 
reference, and you can't even mutate the object.

To make it even more clear, let's have some examples.

List - a mutable type
Let's try to modify the list that was passed to a method:

def try_to_change_list_contents(the_list):
    print('got', the_list)
    the_list.append('four')
    print('changed to', the_list)

outer_list = ['one', 'two', 'three']

print('before, outer_list =', outer_list)
try_to_change_list_contents(outer_list)
print('after, outer_list =', outer_list)
Output:

before, outer_list = ['one', 'two', 'three']
got ['one', 'two', 'three']
changed to ['one', 'two', 'three', 'four']
after, outer_list = ['one', 'two', 'three', 'four']
Since the parameter passed in is a reference to outer_list, not a copy of it, 
we can use the mutating list methods to change it and have the changes 
reflected in the outer scope.


HAKKI

-- 
You received this message because you are subscribed to the Google Groups 
"Jailhouse" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
For more options, visit https://groups.google.com/d/optout.

Reply via email to