# Python id- When x is 3, x and 3 have the same id

Python id is the identity of an object. We can get an object id by id built-in function.

a = 3
b = a

i = id(a)
j = id(b)

print(i)  # 4467476736
print(j)  # 4467476736


Python id represents the memory address of an object

The id of a is 4467476736. Every time running Python program, the value changes. It's important the ids a and b are the same.

The next code represents the essence of Python objects.

a = 3
b = a

print(id(3))  # 4385929472
print(id(a))  # 4385929472
print(id(b))  # 4385929472


3, a, and b have the same id.

## The same values has the same id

print(id(3))  # 4308912384

a = 1
b = 2
c = a + b

print(id(c))  # 4308912384


Every time running Python, the id of 3 changes but the id of 3 and one of c, whose value is 3, are the same.

You may think c is stored in the other memory and both 3 and c are completely different objects. But Python shows both share the same address.

## Object in function

def f(n):
print('id(n) =', id(n))

m = n + 2

print('id(m) =', id(m))

return m

print('id(1) =', id(1))
print('id(3) =', id(3))

a = 1
b = f(a)

# id(1) = 4401371328
# id(3) = 4401371392
# id(n) = 4401371328
# id(m) = 4401371392


The above shows the id of 1 and the id of a in the function are the same. 3 and m have the same id.

## List id

a = [1, 2, 3]
b = [1, 2, 3]

print(id(a))  # 4513771904
print(id(b))  # 4513772736


We think a and b are equal so the addresses of them are the same. But it is not true. They are completely different.

But as implied in the following code, the same integers have the same id.

a = [1, 2, 3]
b = [1, 2, 3]

print(id(a))  # 4513771904
print(id(b))  # 4513772736

print(id(a[0]))  # 4535740608
print(id(b[0]))  # 4535740608