python--参数传递

来源:互联网 发布:网页在线客服源码 编辑:程序博客网 时间:2024/06/06 13:05
我们已经了解对象的可变性,例如:
def f(a)    a.append("hello")a  = []print af(a)print a //此时会发现,列表a中将会对一项“hello”元素,这就是由于列表的可变性导致的

但是我们有时候并不想因为调用了f()方法而将a[]改变掉,此时应该怎么办呢?

1,对list()进行切片
def f(x)    x.append("hello")    id(x)a  = []print aprint id(a)f(a[:])  //对a进行切片print a //此时会发现,a与x的id不同,也就是两者已经不属于同一个对象了
2,传递不同的对象
3,深拷贝 from copy import deepcopy
from copy import deepcopydef f(x)    x.append("hello")    id(x)a  = []print aprint id(a)f(deepcopy(a))  //对a进行深拷贝print a //此时会发现,a与x的id不同,也就是两者已经不属于同一个对象了

当对象为不可变对象时,其传递时就相当于局部变量,毕竟人家不可变你怎么可以改动人家!!
0 0