在python中值传递和引用传递的说明

在python中值传递和引用传递的说明

值传递
在python中,万物皆对象,那么在传递一个参数给函数进行使用的时候,如果这个参数的值是不可变对象,那么python就会将参数的值传进去进行操作,而不是传递其地址,在操作完成后会形成一个新的对象,地址也会和之前传递的参数地址不同。
引用传递
但如果传递的参数是一个可变对象,那么实际就会将对这个可变对象的引用也就是地址传递进去,在对这个可变对象进行添加、修改或者删除的操作后,还是那个对象,地址是不会改变的。

ef add_ele(x, y):
    x = x + 'abc'
    y.append('abc')
    return x, y


a = 'abcd'
b = ['a', 'b', 'c', 'd']
print('a: ', a, id(a))
print('b: ', b, id(b))
a, b = add_ele(a, b)
print('a: ', a, id(a))
print('b: ', b, id(b))

执行这段代码输出如下

a:  abcd 2143526898032
b:  ['a', 'b', 'c', 'd'] 2143525622280
a:  abcdabc 2143527228144
b:  ['a', 'b', 'c', 'd', 'abc'] 2143525622280

显而易见,变量a作为不可变对象,在作为参数传递给函数add_ele时采用了值传递,而变量b作为可变对象,采取了引用传递的方式传递给函数。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值