title: Difference between Python object reference and variables in cases of mutable and immutable objects
body: <p>I was reading a book on python:</p>
  
  <blockquote>
    <p>Once we have some data types, the next thing we need are variables in which
    to store them. Python doesn’t have variables as such, but instead has object
    references. When it comes to immutable objects like ints and strs, there is
    no discernable difference between a variable and an object reference. As for
    mutable objects, there is a difference, but it rarely matters in practice."</p>
  </blockquote>
  
  <p>Now it is not mentioned what is the difference and I am unable to clear myself on this concept.</p>
  
  <p>What is object reference (Is it the memory address for cpython)?
  Actually what is a variable is it a name that is bound to the object reference (my understanding of memory reference is, that it is a address in the memory for cpython, clear me on this if I am wrong).</p>
  
  <p>It will be helpful if it can be explained in the light of it's internal implementation in C and how are these things managed and working internally.</p>
  
  <p>Also it would be helpful if some resources may be provided that explain cpython implementation in detail.</p>