id()

id(object)
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.

Using integer

my_int=34
print(id(my_int)) # 10969856 
Using list
my_list=[1,2,3]
print(id(my_list)) #139787163392648

Fixed id

These ids will remain same even after re-run of the program.
my_int=-5
print(id(my_int)) # 10968608
my_int=256
print(id(my_int)) # 10976960
my_int=257

Mutable and immutable object and id()

We can see for mutable objects by changing the element the ID will not change , whereas for immutable objects id will change.

More on Mutable & Immutable objects

List is a mutable object but tuple is a immutable object. Check how the identities are changing after adding elements.

Using tuple
my_tuple=(5,7,5,4,3,5) 
print(id(my_tuple)) # 139787173397704
my_tuple +=(9,8)
print(id(my_tuple)) # 139787174601112
print(my_tuple)     #(5, 7, 5, 4, 3, 5, 9, 8)
Using List
my_list=[5,7,5,4,3,5]
print(id(my_list))  # 139787163608584
my_list +=[9,8]
print(id(my_list))  # 139787163608584
print(my_list)      # [5, 7, 5, 4, 3, 5, 9, 8]
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.
variables Iterator any() is() & not is() Operators


Subscribe

* indicates required
Subscribe to plus2net

    plus2net.com



    Post your comments , suggestion , error , requirements etc here





    Python Video Tutorials
    Python SQLite Video Tutorials
    Python MySQL Video Tutorials
    Python Tkinter Video Tutorials
    We use cookies to improve your browsing experience. . Learn more
    HTML MySQL PHP JavaScript ASP Photoshop Articles FORUM . Contact us
    ©2000-2021 plus2net.com All rights reserved worldwide Privacy Policy Disclaimer