Monday, April 27, 2015

How Python Variables Reference Objects - Python Variables - Python Tutorial

Updated: March 9th, 2015


How Python Variables Reference Objects


How Python Variables Reference ObjectsIn the previous two Python tutorials, we discussed how Python variables reference objects which contain the value, type information and reference counter. When we say reference a variable just points to the object which is only a block of memory that contains information. When a variable points to an object that connection between the two is referred to as a reference. In this tutorial, we are going to look at how the actual reference works. Let’s dive into how Python variables reference objects.


Python Reference With One Variable and One Object


a = 2


In this case, the variable would point to the object. The variable is “a” and the object is “2”. So, “a” points to the object that contains “2”. Take a look at our diagram below.


Python Signal Variable


 


Python Reference With Two Variables Same Object


a = 2


b = 2


Here we have two variables with the same value.  In this case, Python would use the same object since “2” is the same for both variables. Have a look at another diagram how Python would reference the objects.


Two Python Variables One Object


In the above case, you can see both variables are referencing the same object even tho they are different variables.


Variable Assigned To Another Variable


a = 2


b = a


In this case, we set a = 2 and then we assign the variable “b” to the variable “a”. In this case the variable “b” does not actually reference “a”. “b” references “a’s” object not the variable. We will use the same diagram from above since it is actually the same.


 Variable Assigned To Another Variable


Reassigning A Variable


a = 2


b = 2


The reassignment


b = 3


In this scenario, we have the variables “a” and “b” set to the same object then we reassign the variable “b” to a new object that contains the value of 3. How would this work? Let’s take a look at another awesome diagram.


Reassigning A Variable in Pyhton


Reassigning a Variable That Has An Assigned Variable


a = 2


b = a


The Reassignment


a = 3


In this scenario, we originally assign the variable “a” to the value of 2 and then we assign the variable “b” to the object of “a”. Then later, on we reassign the variable “a” to a new object. In this case, “b” would still reference the object that contains the value 2 and the variable “a” would reference a new object that contains the value 3. Check out another one of my awesome drawings to better understand how this works.


 Reassigning a Variable That Has An Assigned Variable


How To Access Python Objects Identifier?


We can actually gain access to the identifier with some coding. I will show how we can see the identifier and how we can also see that we are using the same object when referencing the same value with different variables. The returned integer is the actual location of objects in the memory of the underlying C language.


Access Python Objects Reference Example


#Acces Objects Reference
>>> a = 78
>>> id(78)
4297368960

#Access Another Reference
>>> b = "String"
>>> id(b)
4328969864

#How about two variables accessing the same object
>>> c = 2
>>> id(c)
4297366528
>>> d = 2
>>> id(d)
4297366528

#Easier way to compare the two
>>> id(c) == id(d)
True

#How about using above example and the reference is not the same what would happen?
>>> id(c) == id(a)
False

In this tutorial, we really went deep into the workings of the Python programming language. We now see how Python variables reference objects. We also looked into how to find the memory location of an object using the built-in function id(). If you have any questions about how to Python variables reference objects leave a comment below.



No comments:

Post a Comment