函数传参字典_Python基础之函数编写与传参方式
发布日期:2021-06-24 17:21:43
浏览次数:3
分类:技术文章
本文共 2156 字,大约阅读时间需要 7 分钟。
主要关键内容:函数编写与传参方式
- 函数是组织好的,可重复使用的的代码段;
- 函数能提高应用的模块性,和代码的重复利用率。
定义函数与调用函数
- 以 def 关键词开头,后接函数名,函数名后接 ();
- ()之间可以用于定义参数;
- 函数内容以冒号起始,并且转行缩进;
- return代表着函数结束,选择性地返回一个值给调用函数。
```python#定义函数基本格式如下:def 函数名(参数表): 函数语句 return 返回值#参数和返回值都不是必须有的,例如:def hello(): #定义函数 print("hello world") hello() #调用函数,返回hello world#而下面这个例子是为函数定义了两个参数,并用return语句返回值。def add(a,b): #定义函数 return(a+b)add(1,3) #调用函数,返回4```
函数参数(重点)
- 定义函数时,参数表中的参数称为形式参数,简称形参;
- 调用函数时,参数表中的参数称为实际参数,简称实参。
参数具有多态性
- 传入不同类型变量,得到不同结果。
```pythondef duo(a,b): #定义函数 return(a+b)duo(1,4) #调用传入两个int值,返回结果5duo("oh"," my god") #调用并传入两个字符串,返回结果'oh my god'duo((3,4),("g","h")) #调用并传入两个元组,执行元组合并,返回(3, 4, 'g', 'h')duo([7,4],[6,7,8,9]) #调用并传入两个列表,执行列表合并,返回[7, 4, 6, 7, 8, 9]```
参数赋值传递
- 函数调用时按参数的先后顺序,将实参传递给形参;
- 可以以形参赋值的方式,指定将实参传递给形参。
```pythondef fu(a,b): return(a+b) #定义函数fu("ab","cd") #返回"abcd",按对应位置将实参传递给了形参;fu(b="cd",a="ab") #依然返回"abcd",通过形参赋值传参。```
可变参数(小心使用)
- 当实参是可变对象时,如列表、字典。如在函数中修改形参,因为共享引用。通过实参也获得修改后的对象;
- 详见以下例子。
```pythondef kebian1(k): #定义函数 k[1] = "hello"x = [9,10]kebian1(x) #调用函数,传递列表对象的引用print(x) #返回[9, 'hello'],变量原本的引用被修改#嗯哼~那么问题来了!!我们应该如何规避这个问题?(看下行的时候请先思考)#------------------------------------------------------------------#我们规避的思路就是,复制一份,将克隆的传入形参。原本变量不受影响,如下例:k = [1,2]kebian1(k[:]) #调用函数,传递拷贝下来的变量print(k) #返回[1, 2],变量没被改变#还可以在函数内对列表进行拷贝,如下例:def kebian2(k): #定义函数 k = q[:] #拷贝 k[1] = 'hello' q = [3,4]kebian2(q) #调用函数,传递列表对象的引用print(q) #返回[3, 4],变量没被改变```
参数默认值
- 在定义函数的时候,我们可以给参数设置一个默认值。这样我们在调用函数未提供实参时,函数将按照默认参数执行;
- 带默认值的参数,应当放在参数表的末尾;
- 为避免出错,默认参数必须指向一个不可变参数。
```pythondef info(name = "",degree = "未填写"): #定义函数,并将参数degree赋予一个默认值“未填写” print(name,degree)info("熊猫酱") #当只输入一个实参时,会返回熊猫酱 未填写info("熊猫酱","博士") #当输入两个实参时,会返回熊猫酱 博士```
传递任意个参数
- 定义函数是,若参数名前带有"*"号,则表示可接受任意个数的参数,并保存在一个元组中;
- 传参时,"*"号后面的参数必须以关键字传参。
```pythondef add(a,*b,c): #定义函数 s = a+c for i in b: #为了保证语法不出错,当函数带有"*"号的参数时,需要用for循环来循环元组内内容 s += i return sadd(1,2,4,c=9) #返回结果16,注意*b,后面的参数,传参是必须带上关键字。```
转载地址:https://blog.csdn.net/weixin_34081553/article/details/112608807 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!
发表评论
最新留言
能坚持,总会有不一样的收获!
[***.219.124.196]2024年04月06日 06时37分19秒
关于作者
喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
rufus制作u盘启动
2019-04-28
dell r340安装window和linux
2019-04-28
OGG-05673 CSN-based duplicate suppression is disabled because there is no checkpoint table for this
2019-04-28
19c多租户ogg微服务命令行查看参考
2019-04-28
如何配置GOLDENGATE的数据库日志策略、TRAILFILE策略以及存在坑
2019-04-28
建库时在全局名称中添加了xxx.com,后续如何去掉?
2019-04-28
WRI$_ADV_OBJECTS表过大,导致PDB的SYSAUX表空间不足
2019-04-28
oracle查看带末尾下划线的表名和字段名
2019-04-28
nfs挂接命令参考
2019-04-28
oracle一体机(exdata)创建ACFS文件系统
2019-04-28
xshell起图形界面后,鼠标点击不了
2019-04-28
limit资源限制ulimit 详解
2019-04-28
MAX_STRING_SIZE controls the maximum size of VARCHAR2, NVARCHAR2, and RAW data types in SQL.
2019-04-28
How to estimate RMAN incremental backup size using block change tracking file (Doc ID 1938079.1)
2019-04-28
rman备份分配指定操作
2019-04-28
rman备份指定备份集对应文件
2019-04-28
ffmpeg分割mp4视频方便快速
2019-04-28
使用 ffmpeg 快速合并视频文件
2019-04-28
diff对比二进制文件
2019-04-28