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也不会改变,因为赋值操作会重新建立索引,相当于在函数内重新创建了同名参数
Python学习之路:函数传递可变参数与不可变参数的更多相关文章
- Python学习之路——函数
一.Python2.X内置函数表: 注:以上为pyton2.X内置函数,官方网址:https://docs.python.org/2/library/functions.html 二.Python3. ...
- Python学习之路——函数的参数分类
今日内容 '''实参:调用函数,在括号内传入的实际值,值可以为常量.变量.表达式或三者的组合*****形参:定义函数,在括号内声明的变量名,用来接受外界传来的值''''''注:形参随着函数的调用 ...
- Python学习之路——函数对象作用域名称空间
一.函数对象 # 函数名就是存放了函数的内存地址,存放了内存地址的变量都是对象,即 函数名 就是 函数对象 # 函数对象的应用 # 1 可以直接被引用 fn = cp_fn # 2 可以当作函数参数传 ...
- Python学习之路-Day2-Python基础3
Python学习之路第三天 学习内容: 1.文件操作 2.字符转编码操作 3.函数介绍 4.递归 5.函数式编程 1.文件操作 打印到屏幕 最简单的输出方法是用print语句,你可以给它传递零个或多个 ...
- Python学习之路-Day2-Python基础2
Python学习之路第二天 学习内容: 1.模块初识 2.pyc是什么 3.python数据类型 4.数据运算 5.bytes/str之别 6.列表 7.元组 8.字典 9.字符串常用操作 1.模块初 ...
- python学习之路-day2-pyth基础2
一. 模块初识 Python的强大之处在于他有非常丰富和强大的标准库和第三方库,第三方库存放位置:site-packages sys模块简介 导入模块 import sys 3 sys模 ...
- Python学习之路【第一篇】-Python简介和基础入门
1.Python简介 1.1 Python是什么 相信混迹IT界的很多朋友都知道,Python是近年来最火的一个热点,没有之一.从性质上来讲它和我们熟知的C.java.php等没有什么本质的区别,也是 ...
- python学习之路------你想要的都在这里了
python学习之路------你想要的都在这里了 (根据自己的学习进度后期不断更新哟!!!) 一.python基础 1.python基础--python基本知识.七大数据类型等 2.python基础 ...
- Python学习之路-Day1-Python基础
学习python的过程: 在茫茫的编程语言中我选择了python,因为感觉python很强大,能用到很多领域.我自己也学过一些编程语言,比如:C,java,php,html,css等.但是我感觉自己都 ...
- python学习之路网络编程篇(第四篇)
python学习之路网络编程篇(第四篇) 内容待补充
随机推荐
- 牛客网CSP-S提高组赛前集训营Round4
牛客网CSP-S提高组赛前集训营 标签(空格分隔): 题解 算法 模拟赛 题目 描述 做法 \(BSOJ6377\) 求由\(n\)长度的数组复制\(k\)次的数组里每个连续子序列出现数字种类的和 对 ...
- Python研究
听说Python是种高级语言,故打算研究一下,看看高级在哪 学习资源:https://www.liaoxuefeng.com/wiki/1016959663602400 由于上面所示的网站对Pytho ...
- cesium地下模式(地表透明)2
接上一篇博客,这篇直接分析火星的源码,看它到底改了些什么. 注意:在cesium1.63.1版本改变了模块化方式,由AMD改为ES6模块化.注意引入文件加载模块时做出对应修改. 1.火星代码里修改了4 ...
- linux 上使用yum 安装openjdk1.8
使用yum查找jdk: yum search java|grep jdk # yum search java|grep jdk ldapjdk-javadoc.noarch : Javadoc for ...
- Ubuntu 17.10安装VirtualBox 5.2.2 及相关问题解决
link:https://www.linuxidc.com/Linux/2017-11/148870.htm sudo apt update && sudo apt upgrade s ...
- grpc使用记录(一) gRPC编译(mscv/gcc)
目录 1.编译前的准备工作 2.Windows下使用VS2019编译 2.1.使用cmake生成VS2019解决方案 2.2.使用msbuild工具进行编译 3.linux下编译 3.1 CentO ...
- Anaconda用conda创建python虚拟环境
Anaconda用conda创建python虚拟环境 一.简介 conda可以理解为一个工具,也是一个可执行命令,其核心功能是包管理与环境管理.包管理与pip的使用类似,环境管理则允许用户方便地安装不 ...
- MSYS 工具和TOOLCHAIN的配置
博客转载:https://blog.csdn.net/hunterhuang2013/article/details/70880569 1. MSYS2 自带的开发环境,安装的包叫 msys2-dev ...
- k8s记录-kubectl常用命令
kubectl kubectl annotate – 更新资源的注解.kubectl api-versions – 以“组/版本”的格式输出服务端支持的API版本.kubectl apply – 通过 ...
- 使用VEGAS2(Versatile Gene-based Association Study)进行gene based的关联分析研究
gene-based关联分析研究是SNP-based关联分析研究的一个补充. 目前有很多工具支持gene-based关联分析研究,比如GCTA,VEGAS2等. 下面主要介绍一下怎么用VEGAS2做g ...