import sys
a = [1,2,3]
print(hex(id(a)))
'''# a is passing into a function, so a counter become 2,
can't use normal python to check
'''
print(sys.getrefcount(a))
''' # python internal get refer count but a is double
count, due to passing the argumenet into a function
write a function with c code, we pass the address of
the variable instead of variable name '''
import ctypes
def ref_count(address: int):
return ctypes.c_long.from_address(address).value
print(ref_count(id(a)))
b = a
print(hex(id(b)))
print(ref_count(id(a)))
# id(a) is done then pass into ref_count
#
b = None
print(id(b))
'''keep the id of a and see what happen after
a is pointing to other value '''
a_id = id(a)
a = None
print(ref_count(a_id))
# check the address
c = 10
d=11
print(ref_count(a_id))