Python的函数参数传递问题 (提醒!)

Python 我认为与 C/C++ 最不一样的地方就是:没有变量类型。 而这个特点恰恰会带来一个很严重的问题,就是针对函数参数的传递。习惯了C/C++, 对于传参简直就是张口就来: 传值、传地址、引用。但是Python函数参数的传递和这些都不一样,因为Python的变量都是和对象进行绑定的,为此只要对象发生改变,变量的值就不会被函数改变。

def f(a):
	a = a + 1
b = 2
f(b)
print(b)
###  >  2 (因为运算导致新对象的创建,导致a不再和b绑定同一个对象,为此b的值不变)

def f(a):
	a[0] += 1
b = [1, 2]
f(b)
print(b)
### > [2, 2] (因为与b绑定的是一个list对象,list对象是可变对象,函数并未导致a, b绑定不同的对象,为此b的值发生改变)

def f(a):
	a = [1, 2]
	a[0] += 1
b = [1, 2]
f(b)
print(b)
### > [1, 2] (因为a与一个新的对象进行绑定,函数导致a, b绑定不同的对象,为此b的值不发生改变)
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值