What is that object 'identity'? Why are the object value and label not enough?
The built-in id()
function returns the 'identity' of an object. This is an integer which is guaranteed to be unique and constant for this object during its lifetime. Two objects with non-overlapping lifetimes may have the same id()
value.
CPython implementation detail: This is the address of the object in the memory. Don’t treat it as an absolute memory address.
Run the code presented in the right pane to see how the strings are located in the memory.
Remember that the memory addresses are different:
a_string identity: 8466656
b_string identity: 8466704
output
This function is rarely used in applications. More often you’ll use it to debug the code or to experiment while copying objects. The side effect of this infrequent use is that some developers forget about its existence and create their own variables titled id
to store some kind of identity or identifier.
As a result, a variable called id
shadows the genuine function and makes it unreachable in the scope in which the variable has been defined. You should remember to avoid such situations!