2000字范文,分享全网优秀范文,学习好帮手!
2000字范文 > Python学习之路:函数传递可变参数与不可变参数

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

时间:2018-10-05 14:07:10

相关推荐

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

函数传参的方法:

太基础了,8说了

直接上重点

一、可变参数的传递

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

直接上代码:

a = [1, 2]def fun(a):print('传入函数时a的值为:', a)a.insert(2, 3)#修改aprint('函数改动后a的值为:', a)fun(a) #调用函数print('调用函数后全局中a的值为:', a)结果为:传入函数时a的值为: [1, 2]函数改动后a的值为: [1, 2, 3]调用函数后全局中a的值为: [1, 2, 3] #可以看到函数外部a的值被改变了

结论:

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

注:

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

二、不可变参数的传递

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

上代码:

a = 1def fun(a):print('传入函数时a的值为:', a)a = 2#这里是通过重新赋值的方法修改,只是为了举例,毕竟不可变参数没有真正的修改方法print('函数改动后a的值为:', a)fun(a) #调用函数print('调用函数后全局中a的值为:', a)结果为:传入函数时a的值为: 1函数改动后a的值为: 2调用函数后全局中a的值为: 1 #可以看到函数外部a的值并没有改变

结论:

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

注:

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

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。