以最常见的不变对象字符串类型str和可变对象列表list为例
#!/usr/bin/env python#-*- coding:utf-8 -*-# 对于可变对象,对它进行操作,其内容是会变化的a = ['c', 'b', 'a']a.insert(2,'d')a.sort()print a# 对于不可变对象,对它进行操作,其内容是不会变化的b = "abcd"print bd=b.replace('c','C')print dprint b# b是一个变量,"abcd"是它指向对象的内容,a的replace方法其实是作用在它指向对象的内容上的# 对于不变对象来说,调用对象自身的任意方法,也不会改变该对象自身的内容。相反,这些方法会创建新的对象并返回,这样,就保证了不可变对象本身永远是不可变的。# 从内存角度区分:变量,对象,对象的内容# 选择不可变对象作为key很重要,最常用的key是字符串。# tuple是不变对象,但是tuple并不总是可以作为keys = set ((1,2,3))print s# s = set ((1,[2,3])) # 此处提示报错,因为此时tuple的内容是可变的# print s
运行效果: