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