我们已经了解对象的可变性,例如:
def f(a)
a.append("hello")
a = []
print a
f(a)
print a //此时会发现,列表a中将会对一项“hello”元素,这就是由于列表的可变性导致的
但是我们有时候并不想因为调用了f()方法而将a[]改变掉,此时应该怎么办呢?
1,对list()进行切片
def f(x)
x.append("hello")
id(x)
a = []
print a
print id(a)
f(a[:]) //对a进行切片
print a //此时会发现,a与x的id不同,也就是两者已经不属于同一个对象了
2,传递不同的对象
3,深拷贝 from copy import deepcopy
当对象为不可变对象时,其传递时就相当于局部变量,毕竟人家不可变你怎么可以改动人家!!
from copy import deepcopy
def f(x)
x.append("hello")
id(x)
a = []
print a
print id(a)
f(deepcopy(a)) //对a进行深拷贝
print a //此时会发现,a与x的id不同,也就是两者已经不属于同一个对象了
当对象为不可变对象时,其传递时就相当于局部变量,毕竟人家不可变你怎么可以改动人家!!