• 欢迎访问搞代码网站,推荐使用最新版火狐浏览器和Chrome浏览器访问本网站!
  • 如果您觉得本站非常有看点,那么赶紧使用Ctrl+D 收藏搞代码吧

python的可变参数和不可变参数是什么

python 搞java代码 2个月前 (05-21) 2次浏览 已收录 0个评论

一、可变参数的传递

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

直接上代码:

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的值被改变了

www#gaodaima.com来源gaodai$ma#com搞$$代**码)网搞代码

结论:

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

(更多学习内容,请点击搞代码网)

二、不可变参数的传递

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

代码:

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.gaodaima.com


喜欢 (0)
[搞代码]
分享 (0)
发表我的评论
取消评论

表情 贴图 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址