Lior Lior - 7 months ago 24
Python Question

python variables are pointers?

Variables in python are just pointers, as far as I know.

Based on this rule, I can assume that the result for this code snippet:

i=5
j=i
j=3
print i


would be
3
.
But I got an unexpected result for me, it was
5
.

Moreover, my python book does cover this example:

i=[1,2,3]
j=i
i[0]=5
print j


the result would be
[5,2,3]
.

What am I understanding wrong?

Answer

We call them references. They work like this

i = 5     # create int(5) instance, bind it to i
j = i     # bind j to the same int as i
j = 3     # create int(3) instance, bind it to j
print i   # i still bound to the int(5), j bound to the int(3)

Small ints are interned, but that isn't important to this explanation

i = [1,2,3]   # create the list instance, and bind it to i
j = i         # bind j to the same list as i
i[0] = 5      # change the first item of i
print j       # j is still bound to the same list as i