Python Tutorial: How Python Variables Reference Objects

preview_player
Показать описание
How Python Variables Reference Objects Python tutorial visit our website for more information at -
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 Reference Counter?
We can actually gain access to the reference counter with some coding. I will show how we can see the reference counter 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.
Рекомендации по теме
Комментарии
Автор

Although a = 2; b = 2; both reference to the same object 2, but it's just a special case. Python has special treatment on some frequently used objects such as 0, 1, -1, etc. In most situation, for example a = 1235; b = 1235;, there will be two different object created with the same value 1235 and a, b referenced to each one separately. This can be easily check out with the id() function. The basic rule of assignment is that it never copy.

jachfeng
Автор

If a= 350
b=350
It gives two different memory address . Can you explain why?. I'm running Python 3.7.2

nipunsharma
Автор

Thank you for this. This helped a lot in understanding Python's quirky way of handling object references in functions

xxbighotshotxx
Автор

Excellent explanation! Well done! Keep up the good work! Thank you!

dennisbrul
Автор

This is the superficial "how"I would like to know the "why". Is there a tutorial out there which shows what happens at memory level?

For example, could it be that id() points to the starting address of the assigned data?

angel_machariel
Автор

Amazing Tutorial, Thanks Sir, God Bless You ❤

rammaheshwari
Автор

would have been nice to go into link lists and double link lists.

mrthomasfritz
Автор

not a very poor tutorials honestly speaking

terryjordan
Автор

its didn't say that the last type was a list it sad it was a tuple?

elementalgroyper
Автор

wait.. then if I create a matrix.. and initialize it with 1, then it means that EVERY INDEX is referencing the SAME memory adress? wtf....

robertbencze