函数高级

一、函数返回多个数据值

  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()

 

  

posted @ 2023-04-01 16:58  新入世界的小白  阅读(20)  评论(0编辑  收藏  举报