函数高级
一、函数返回多个数据值
1、return 关键字的两个作用
返回数据值
结束函数运行
2、函数中如果想要返回多个数据值,一般是组成元组进行返回
def func(a,b): ''' 返回两个数的和及差 ''' return a + b , a - b #元组可加括号,也可以不加 print(func(10,20)) #(30, -10)
二、函数的传参方式
是指如何将 实参的值传递给行参
1、位置传参:在函数调用的时候按照行参的顺序,将实参的值传递给形参
2、关键字传参:在函数调用的时候,指定将实参传递给特定实参
3、混合使用:位置参数必须写在关键字前面,关键字参数必须放在位置参数后面
同一个形参只能接受一个实参值
def func(name,age): print(f'name:{name},"age:{age}') func("小明",18) #位置传参 func(age=19,name="小张") #关键字传参 func("小吴",age=17) #混合使用
4、缺省参数(默认参数)
定义:在函数定义的时候,给形参一个默认的数据值,这个参数就是缺省参数(默认参数)
特点:在函数调用时,缺省参数可以不传实参。不传实参就使用默认值,传实参就使用实参值
注意:缺省参数必须写在 普通参数后边
def func(name,age,sex = "男"): print(f'name:{name},age:{age}',sex) func("小明",18) #位置传参 func(age=19,name="小张") #关键字传参 func("小吴",age=17,sex="默认") #混合使用 #name:小明,age:18 男 #name:小张,age:19 男 #name:小吴,age:17 默认
5、多值参数
在函数定义的时候,不确定在调用的时候,实参是有多少个,此时可以使用多值参数
在普通参数旁边加上 * ,这个参数就变成多值参数了
这个参数可以接受任意多个位置传参的数据,类型为元组
这个形参一般写作:* args
def func(*args): num = 0 for i in args: num += i return num print(func(1, 2, 3)) #6
6、匿名函数
使用 lambda 关键字 定义的表达式,称为匿名函数。一般不直接调用,作为函数参数使用
语法:lambda 参数,参数 :表达式
用法:将字典按照什么键排序(关键字为 key)
字典 . sort(key=lambda x:x["age"]) #此时根据字典中的 age 键来排序
#定义匿名函数,对两个数字进行求和 func = lambda a,b : a + b #将匿名函数变量的地址保存到func print(func(1,2))
#定义匿名函数,对两个数字进行求和 func = lambda x: x.get("age") #定义一个字典,并返回age print(func({"age":12}))
案例:学生信息管理系统
stu_list = [] #定义列表保存学生信息 def make_student(): '''录入学生信息''' name = input("请输入姓名:") age = input("请输入年龄:") stu_dict = {"name":name,"age":age} return stu_dict def show_stu(): j = 1 #初始序号 for stu_dict in stu_list: #此时stu为字典 print(f"{j}\t{stu_dict.get('name')}\t{stu_dict.get('age')}") j += 1 def num_stu(): return len(stu_list) def search_stu(): name = input("请输入需要查询的姓名:") for stu_dict in stu_list: if name == stu_dict.get("name"): print(f"姓名:{name},年龄:{stu_dict.get('age')}") return #结束函数执行 print("未找到") if __name__ == "__main__": for i in range(3): stu = make_student() #将单个学生添加进列表 stu_list.append(stu) #展示学生信息 show_stu() #统计学生总数 print(num_stu()) search_stu()