# -*- coding: utf-8 -*-
# 对象与引用
# 1为对象,a是一个引用,引用a指向对象1
a = 1
# 创建多个等于1的引用
b = 1
if __name__ == '__main__':
# 打印对象的内存地址
print id(a)
print hex(id(a))
# 整数和短小的字符,python会缓存这些对象,以便重复使用
print id(b)
# 用is判断两个引用所指向的对象是否相同
print (a is b)
x = 'hello'
y = 'hello'
print (x is y)
print (a is x)
m = 'very good morning abcdefghijkl'
n = 'very good morning abcdefghijkl'
print (m is n)
# 查看对象的引用计数
from sys import getrefcount
a = [1, 2, 3]
print getrefcount(a)
b = a
print getrefcount(b)
#
import gc
gc.collect()
print gc.get_threshold()
####
a = []
b = [a]
a.append(b)
print getrefcount(a)
print getrefcount(b)
del a
del b
x = [1, 2, 3]
y = [x, dict(key1=x)]
z = [y, (x, y)]
import objgraph
objgraph.show_refs([z], filename='ref_topo.png')
参考:http://www.cnblogs.com/vamei/p/3232088.html