Python学习之路:函数传递可变参数与不可变参数

函数传参的方法:

  太基础了,8说了

  直接上重点

 

一、可变参数的传递

  可变参数有:列表、集合、字典

 

直接上代码:

a = [1, 2]

def fun(a):
    print('传入函数时a的值为:', a)
    a.insert(2, 3)                                    #修改a
    print('函数改动后a的值为:', a)

fun(a)                                                #调用函数
print('调用函数后全局中a的值为:', a)

结果为:

传入函数时a的值为: [1, 2]
函数改动后a的值为: [1, 2, 3]
调用函数后全局中a的值为: [1, 2, 3]                       #可以看到函数外部a的值被改变了

结论:

  函数传递可变参数时,会将包括索引在内的整体传递进去,当函数内部对参数进行修改时,函数外部的参数也会被修改

注:

  这里的修改指的是不会重新创建索引的那种修改,故赋值操作不属于这种情况

 

二、不可变参数的传递

  不可变参数有:数字、字符串、元组

 

上代码:

a = 1

def fun(a):
    print('传入函数时a的值为:', a)
    a = 2                                             #这里是通过重新赋值的方法修改,只是为了举例,毕竟不可变参数没有真正的修改方法
    print('函数改动后a的值为:', a)

fun(a)                                                #调用函数
print('调用函数后全局中a的值为:', a)

结果为:

传入函数时a的值为: 1
函数改动后a的值为: 2
调用函数后全局中a的值为: 1                               #可以看到函数外部a的值并没有改变

 

结论:

  函数传递不可变参数时,只传递了值,当函数内部对参数进行修改时,其实只是重新创建了一个同名参数,函数对这个同名参数的操作并不会影响到函数外部的参数

 注:

  这里为了举例使用的是重新赋值的方法,其实在这种情况下即使a是可变参数,全局中的a也不会改变,因为赋值操作会重新建立索引,相当于在函数内重新创建了同名参数

 

转载于:https://www.cnblogs.com/toxic-antidote/p/11468363.html

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值