python--参数传递

我们已经了解对象的可变性,例如:
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不同,也就是两者已经不属于同一个对象了

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值