The key to understanding Python is understanding assignment
Similar to pointers in C
Assignment creates references
Functions are pass-by-assignment
Names are created when first assigned
Names must be assigned before being referenced
spam = 'Spam' #basic assignments
spam, ham = 'yum','YUM' #tuple assignment
spam = ham = 'lunch' #multiple target
Can use the copy module for times when you want a new object rather
than a pointer to an existing object