目录
一、return关键字的两个作用
1、终止函数
-
调用函数时,程序遇到函数内的第一个return语句,就会退出函数块,不会再运行第二个return。
(1)
(2)
2、 将函数定义内部的任意数据,返回给函数调用处。
-
函数中如果想要返回多个数据值给函数调用处,一般是 组成元组(组包) 进行返回。
3、说明:函数内部什么时候使用print
-
如果函数只需要打印语句,不需要传递值的时候,可以使用print语句代替return语句。
二、函数传参的方式
1、函数传参的定义
-
如何将实参的值传递给形参。
实参:调用函数时传入的值。
形参:定义函数时定义的参数。
2、位置传参
-
在函数调用时,按照形参的顺序,将实参的值,传递给形参。
3、关键字传参
-
在函数调用时,指定将实参的值传递给哪个形参。
4、混合使用
-
位置参数,必须卸载关键字参数前边;关键字参数必须放在位置参数的后边。
-
同一个形参,只能接收一个实参值,不能同时使用位置传参和关键字传参,传值给同一个形参。
5、举例说明-函数传参的三种方式
三、缺省参数(默认参数)
1、定义
-
定义函数时,给某个参数指定一个默认值,具有默认值的参数。
2、使用场景
-
调用函数时,如果没有传入缺省函数的值,则使用默认值。
-
将常见的值设置为参数的缺省值,从而简化函数的调用。
3、注意
-
必须保证 缺省参数 在参数列表末尾。
-
在调用函数时,如果有多个缺省参数,需要指定参数名,这样解释器才能够知道参数的对应关系。
4、语法格式
5、举例说明-函数定义多个缺省参数
四、多值参数(可变参数/不定长参数)
1、使用场景
-
在定义函数的时候,不确定在调用函数时,实参有多少个,此时可以使用,多值参数。
2、语法格式
-
在普通的参数前面,加上一个*,这个参数就变为多值参数。
3、注意
-
一般用*args接收元组类型数据。**kwargs接收字典类型参数。
-
args、kwargs为习惯命名,可以自定义。
-
多值参数,要放在缺省参数的后面。
4、参数顺序由:
-
如果要定义缺省参数,一定放在参数列表的最后面,以保证在实参传数给形参时的正确性。
5、举例说明-多值参数
-
需求
(1)定义一个函数sum_numbers,可以接受 任意多个整数;
(2)功能要求:将传递的 所有数字累加,并且返回累加结果。
五、组包拆包
1、组包(pack)
-
python中自动操作,当等号右边有多个数据的时候,会自动将多个数据值包装成为元组,同时赋给一个变量,这个过程就是组包。
2、解包( unpack)
-
定义
python中自动解包, 把一个容器中拆开后, 将从容器中拆出来的数据 逐一赋值给变量。
(1)需保证变量数量=元素数量。
(2)在Python中任何可迭代对象都支持解包。
可迭代对象包括列表、元组、字典、集合、字符串、生成器等,实现了__next__方法的一切对象。
-
作用
将传递给函数的一个列表,元组,字典,拆分成独立的多个元素,然后赋值给函数中的形参变量。
六、举例说明-不同数据类型解包
1、列表解包
2、元组解包
3、字符串解包
4、字典解包
-
注意:字典这样解包后,只会把字典的key取出来,value 则丢掉了。
5、参数不够的情况
七、对调用函数时,对数据解包的两种方式
1、*变量名
-
调用函数时,通过*,将数据解包后,传给函数的形参。
-
说明:想要把列表(元组)中的数据作为 位置参数 按顺序传递给形参, 只需要在列表(元组)前边加上一个 * ,进行拆包即可。
-
注意:字典这样解包后,只会把字典的key取出来,value 则丢掉了。
2、**变量名
-
调用函数时,通过**,将数据解包后,传给函数的形参。
-
**符号作用的对象是字典对象,它会自动解包成关键字参数 key=value 的格式,传递给参数。
八、匿名函数
1、定义
-
使用lambda关键字,定义的表达式,称为匿名函数。
2、语法
3、说明
-
将匿名函数 在内存中存储的地址 保存到变量中,所以 变量名就指代匿名函数。
-
表达式:不能包含循环、return、可以包含if...else...
-
参数: 参数可有可无,如果有多个参数,使用逗号隔开 。
-
匿名函数能接收,任意数量的参数,但只能返回一个表达式的值。
-
用lambda关键字创建的简化型函数,不同于使用def声明的函数,匿名函数没有函数名称。
-
匿名函数只能实现简单的功能,因为只能写一行代码。
-
匿名函数,一般不直接调用,作为函数的参数使用的。
九、举例说明-匿名函数的应用
1、创建一个匿名函数
2、求两个数中最大的值
3、按照年龄对列表中的数据进行排序
十、sort()排序函数
1、语法
2、说明
-
Iterable: 可迭代对象。
-
key: 排序规则(排序函数)。
在sorted内部会将可迭代对象中的每一个元素,传递给这个函数的参数. 根据函数运算的结果进行排序。
-
reverse: 是否是倒叙. True: 倒叙, False: 正序。