python byRef // copy
Question: I am new to Python (and dont know much about programming anyway), but I
remember reading that python generally does not copy values so any statement a
= b makes b point to a. If I run

    
    
    a = 1
    b = a
    a = 2
    print(b)
    

gives the result 1. Should that not be 2?


Answer: No, the result should be 1.

Think of the assignment operator ( `=` ) as the assignment of a reference.

    
    
    a = 1 #a references the integer object 1
    b = a #b and a reference the same object
    a = 2 #a now references a new object (2)
    print b # prints 1 because you changed what a references, not b
    

This whole distinction really is most important when dealing with _mutable_
objects such as `lists` as opposed to _immutable_ objects like `int`,`float`
and `tuple`.

Now consider the following code:

    
    
    a=[]  #a references a mutable object
    b=a   #b references the same mutable object
    b.append(1)  #change b a little bit
    print a # [1] -- because a and b still reference the same object 
            #        which was changed via b.
    

