在之前的时候, 黑马教的函数只告诉我们如何去定义一个基本的函数~ 然后这一章主要告诉我们关于函数多返回值, 多种传参方式以及匿名函数的问题.
下面来简单介绍一下~
目录
- 1. 函数多返回值?
- 2. 函数的多种传参方式?
- 2.1 位置参数
- 2.2 关键字参数
- 2.3 缺省传参
- 2.4 不定长参数传参
- 3. 匿名函数
- 3.1 函数作为参数传递
- 3.2 lambda匿名函数
- 4. 总结
1. 函数多返回值?
我感觉Python这个功能还是相当使用的, 像我之前学的C/CPP等语言都是只能返回一个参数的, 这样在一些稍微需要返回俩值的场景就得再套一层结构体去解决~
2. 函数的多种传参方式?
函数有多种传参方式, 主要有下面几种:
- 位置参数
- 关键字参数
- 缺省参数
- 不定长参数
2.1 位置参数
位置参数:调用函数时根据函数定义的参数位置来传递参数
注意: 传递的参数和定义的参数的顺序及个数必须一致
2.2 关键字参数
关键字参数:函数调用时通过“键=值”形式传递参数.
作用: 可以让函数更加清晰、容易使用,同时也清除了参数的顺序需求.
注意:函数调用时,如果有位置参数时,位置参数必须在关键字参数的前面,但关键字参数之间不存在先后顺序
2.3 缺省传参
缺省参数:缺省参数也叫默认参数,用于定义函数,为参数提供默认值,调用函数时可不传该默认参数的值(注意:所有位置参数必须出现在默认参数前,包括函数定义和调用).
作用: 当调用函数时没有传递参数, 就会使用默认是用缺省参数对应的值.
注意: 函数调用时,如果为缺省参数传值则修改默认参数值, 否则使用这个默认值
2.4 不定长参数传参
- 不定长参数, 位置传参
- 不定长参数, 关键字传参
注意:
传进的所有参数都会被args变量收集,它会根据传进参数的位置合并为一个元组(tuple),args是元组类型,这就是位置传递
本质是一个元组.
注意:
参数是“键=值”形式的形式的情况下, 所有的“键=值”都会被kwargs接受, 同时会根据“键=值”组成字典.
本质是一个字典.
3. 匿名函数
没想到, Python中的函数竟然也可以作为参数传递, 不过相比于传参传的是值, 我们函数传参传递的是逻辑方法.
3.1 函数作为参数传递
3.2 lambda匿名函数
函数的定义中
def关键字,可以定义带有名称的函数
lambda关键字,可以定义匿名函数(无名称)
有名称的函数,可以基于名称重复使用。
无名称的匿名函数,只可临时使用一次。
匿名函数定义语法:
lambda 传入参数: 函数体(只能是一行代码)
lambda 是关键字,表示定义匿名函数
传入参数表示匿名函数的形式参数,如:x, y 表示接收2个形式参数
函数体,就是函数的执行逻辑,要注意:只能写一行,无法写多行代码
下面是一个简单举例:
这个lambda主要是配合函数作为参数传递给函数玩的~
注意:
- 匿名函数用于临时构建一个函数,只用一次的场景
- 匿名函数的定义中,函数体只能写一行代码,如果函数体要写多行代码,不可用
- lambda匿名函数,应使用def定义带名函数
4. 总结
EOF.