"""
reference assignment
Now we will look at reference assignment where the object referenced is immutable.
Later we will consider reference assignment when the object referenced is mutable.
"""

# First consider the assignment operator.

var1 = 4     # sets var1 to reference the int object with a value of 4

# Now a different way the assignment operator can be used.

var2 = var1  # sets var2 so it is a reference to the same object as var1
             # not a new object with the same value, but the same object.

# Of course the values are the same.  
print("var1:", var1)     # resust: 4
print("var2:", var2)     # resust: 4

# We can test that values are the same with the == operator
print("var1 == var2:", var1 == var2)     # result: True

# each object has a unique id
# we can see that var1 and var2 reference the same object
# by looking at the id
print( "var1:", id(var1) )     # result: 1517508928
print( "var2:", id(var2) )     # result: 1517508928

# we can test that the id values are the same.
# This tests that the id value is the same object.
print("var1 is var2:", var1 is var2)     # result: True

# now we can change one of them so they are different
# the names refer to different objects with different values
var2 = 5
print("var1:", var1)     # resust: 4
print("var2:", var2)     # resust: 5