Returns unique identity ( integer or long integer ) of the python object.
identity is assigned when object is created.
It is the address of the object's memory
id changes each time the program is run except some objects for which id is fixed.
Two non-overlapping lifetime objects may have the same identity or id() vlaue.
Comparing list( Mutable ) with string ( immutable )
When we assign a different value to a string variable we are not modifying the string object, we are creating a new string object.
But when we change any element of a list we are not creating a different object, we are only modifying the same object.
my_list=[1,2,3]
str='welcome'
print("address of list : ", id(my_list))
print("address of string str : ",id(str))
# change the values
# modified the list object, not a new object , address is same.
my_list[1]=7
print("address of list : ", id(my_list))
# str[1]='p' # this will generate error
# new string object is created now,
# not modified the old one, address changed
str='Python'
print("address of string str : ", id(str))
Output
address of list : 140301581527624
address of string str : 140301582741432
address of list : 140301581527624
address of string str : 140302155689016
The id value of list is not changing, but it is changing for string.
Key Points About id() Function
Uniqueness: The identity value is guaranteed to be unique among simultaneously existing objects. Once an object is destroyed, its identity may be reused for a newly created object.
Implementation Dependent: The actual value returned by id() is implementation-dependent. While in CPython it's the object's memory address, other Python implementations might use different methods.
Use in Comparisons: The id() function is useful in comparing whether two variables point to the same object in memory, which is a stricter comparison than equality of value.