可变性:指一个对象的值是否可改变。
所有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也改变了
时间: 2024-10-01 01:00:30