首页 > 代码库 > 我爱Python之对象的可变性

我爱Python之对象的可变性

可变性:指一个对象的值是否可改变。
 
所有Python对象都有三个属性:类型、标识符、值,三个属性几乎总是只读的,在对象的生命周期内它们是不可变的。唯一例外的是对象的值,如果值可变则是可变对象,值不可变就是不可变对象。
 
不可变对象传值,可变对象传引用
 
简单的类型或者“标量”类型,包括整数和其他数字类型,str和Unicode字符串类型以及元组是不可变的。剩下字典、列表、类、类的实类等都是可变的
 
>>> mylist1 = [1, ‘a‘, [‘foo‘, ‘bar‘]]
>>> mylist2 = list(mylist1)
>>> mylist2[0] = 2
>>> mylist2[2][0] = ‘biz‘
 
>>> print mylist1
[1, ‘a‘, [‘biz‘, ‘bar‘]]
>>> print mylist2
[2, ‘a‘, [‘biz‘, ‘bar‘]]
 
前两个对象整数和字符串是不可变的(传值),但第三个对象是可变的列表(传引用),所以mylist1也改变了

我爱Python之对象的可变性