python 参数传递

参数传递在python赋值、浅拷贝、深拷贝这篇文章中,我们知道了python中变量就是对象的引用(别名)。那么当函数进行传参操作时,函数内的形参与实参是什么关系?python采用的参数传递方式是共享传参,参数的各个形式参数获得的是实参中各个引用的副本,也就说形参是实参的别名,参数传递传的还是引用。这种传引用的方式在传不可变对象时没啥问题,但如果传递的是可变对象,就有可能改变实参的值(和可变对象的赋值操作类似)。看例子:def f(a, b): a += b return ax,
摘要由CSDN通过智能技术生成

参数传递

在python赋值、浅拷贝、深拷贝这篇文章中,我们知道了python中变量就是对象的引用(别名)。那么当函数进行传参操作时,函数内的形参与实参是什么关系?

python采用的参数传递方式是共享传参,参数的各个形式参数获得的是实参中各个引用的副本,也就说形参是实参的别名,参数传递传的还是引用。

这种传引用的方式在传不可变对象时没啥问题,但如果传递的是可变对象,就有可能改变实参的值(和可变对象的赋值操作类似)。

看例子:

def f(a, b):
    a += b
    return a

x, y = 1, 2
print(f(x, y), x, y)

c, d = [1, 2], [3, 4]
print(f(c, d), c, d)

e, g = (1, 2), (3, 4)
print(f(e, g), e, g)

运行结果:
3 1 2
[1, 2, 3, 4] [1, 2, 3, 4] [3, 4]
(1, 2, 3, 4) (1, 2) (3, 4)

运行程序后,传递的参数为int和tuple时,形参改变,实参没有改变,但传递的参数是list时,改变形参的值,实参的值也发生了变化。

可选参数默认值

python函数传参时还允许我们设置函数的可选参数,并为其设置默认值,形如def f(a, b=0),调用函数f时,如果传递两个参数,那么a和b就是对应的传递过来的值,如果只有一个参数,那么就将其赋给a,b的值就是默认的0。一般我们将可选参数的默认值设置为Noneÿ

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值