python中函数定义是使用def进行定义,函数可以理解为 多个语句代码组成,用来实现单一或者相关功能的代码段,在程序中可以重复调用而无需编写重复代码。
1 def add(a,b): #定义一个函数
2 c = a+b3 return c #返回值,如果没有return语句,则返回值为None
1、函数返回值
函数返回值使用return关键字,可以返回多个值,若没有return语句,则返回值为None
2、函数参数:形参、实参
形参为函数定义时使用的参数名,实参为具体调用时的参数名
1 def add(a,b): #a,b为形参
2 c = a+b3 print(c)4 returnc5
6
7 a1=3
8 b1=4
9 add(a1,b1) #a1,b1为实参
传递不可变的数据对象,若函数内进行重新赋值实参数据对象值不会被改变
1 deffun(a):2 a=12
3 returna4
5 b=1
6 print(fun(b)) #输出结果为12,参数b执行2,在传递给函数fun(b)时,按传值方式a复制b,因此a,b都指向2对象,在函数内a=12重新生成一个12对象,让a执行它
7 print(b) #输出结果为2
传递可变的数据对象,若函数内进行重新赋值实参数据对象值被改变
1 deffun(args):2 args.insert(1,'5') #在第二个位置插入'5'
3 print(args)4
5 list1 = [1,2,3,4,5,6]6 fun(list1)7 print(list1) #值被改变
3、默认参数、动态参数
若函数参数有默认值,则在调用时可以不传默认参数的值,此时使用默认值。当不清楚函数需要传输几个参数可以使用动态参数,一般分两种 :*args为元祖形式,**kwargs为字典形式
1 1 def add(a,b=3):2 2 print(a+b)3 3
4 4 add(2) #结果为5,此时b使用默认参数3
5 5 add(2,5) #结果为7,此时b使用传输参数值5
当函数同时存在必须参数、默认参数、*args、**kwargs参数时参数顺序如下:Python3参数顺序:必选参数,默认参数,*args,**kwargs
1 def add(x,z=11,*args,**kwargs):2 print(x)3 print(z)4 print(args)5 print(kwargs)6
7
8
9 add(1,2,3,4,y=5,a=6,b=7) #结果为7,此时b使用传输参数值5
执行结果:
1 1
2 2
3 (3, 4)4 {'y': 5, 'a': 6, 'b': 7}
4、局部变量和全局变量
局部变量参数只能在函数内起作用,全局变量可以在整个模块中可以调用
1 user = 'admin' #全局变量
2
3 deflogin():4 user = 'admin11' #局部变量
5 print(user)6
7 definfo():8 globaluser9 user = 'admin22'
10 print(user)11
12
13 login() #结果为admin11
14 print(user) #结果为admin
15 info() #结果为admin22
16 print(user) #结果为admin22
当函数内局部变量名与全局变量名一致时,优先使用局部变量
5、lambda函数
python中使用lambda创建匿名函数,所谓匿名即不使用def定义标准的函数,它是一个简单的表达式。lambda 函数拥有自己的命名空间,且不能访问自己参数列表之外或全局命名空间里的参数。
语法如下:
lambda [arg1[, arg2, ... argN]]: expression
参数是可选的,如果使用的参数话,参数通常也是表达式的一部分
1 1 add1 = lambda a,b:a+b #:a、b左侧为参数,右侧a+b为表达式且是返回之
2 2 print(add1(4,5))
6、函数实战
6..实现学生管理系统,完成对学员的增,删,改,查和退出学生管理系统。
要求1:使用一个list用于保存学生的姓名。要求2:输入0显示所有学员信息,1代表增加,2代表删除,3代表修改,4代表查询,exit代表退出学生管理系统。每一个功能定义一个自定义函数。界面如下:系统界面如下:-----------------------欢迎进入T666班学生管理系统-----------------------------请选择系统功能:0:显示所有学员信息1:添加一个学员信息2:删除一个学员信息3:修改一个学员信息4:查询一个学员信息exit:退出学生管理系统(0)输入0后效果如下:0["郭易","汤碗珍"..](1)输入1后效果如下:1请输入增加人的姓名:张三["郭易","汤碗珍",'张三'..](2)输入2后效果如下:2请输入删除人的姓名:张三["郭易","汤碗珍"..](3)输入3后效果如下:<注意:如果list中没有这个学员则打印:T666班没有这个学员>3请输入需要修改人的姓名:张三请输入需要修改后的姓名:李四["郭易","汤碗珍",'李四'..]4)输入4后效果如下:<注意:如果list中没有这个学员则打印:T666班没有这个学员>请输入查询人的姓名:张三郭易在座位号(3<下标>)的位置。(5)输入exit后效果如下:exit欢迎使用T666的学生管理系统,下次再见。
1 defquestudent(slist):2 print(slist)3 print("\n")4
5 defaddstudent(slist):6 adds = str(input("请输入增加人的姓名:"))7 for s inslist:8 if s ==adds:9 print('添加的学员名已存在')10 break
11 else:12 slist.append(adds)13 print(slist)14 print("\n")15
16 defdelstudent(slist):17 dels = str(input("请输入删除人的姓名:"))18 for s inslist:19 if s ==dels:20 slist.remove(dels)21 break
22 else:23 print("删除人的姓名不存在")24 print(slist)25 print("\n")26
27
28 defupstudent(slist):29 ups = str(input("请输入需要修改人的姓名:"))30 upsn = str(input("请输入需要修改后的姓名:"))31 slen =len(slist)32 for i inrange(slen):33 if slist[i] ==ups:34 slist[i] =upsn35 print(slist)36 break
37 else:38 print("T666班没有这个学员")39 print("\n")40
41 defquestudentnum(slist):42 ques = str(input("请输入查询人的姓名:"))43 slen =len(slist)44 for i inrange(slen):45 if slist[i] ==ques:46 print("{0}在座位号{1}的位置".format(ques,i))47 print("\n")48
49
50 defmain():51 slist = ["郭易","汤碗珍"]52 whileTrue:53 choice = input('请选择系统功能:\n0:显示所有学员信息\n1:添加一个学员信息\n2:删除一个学员信息\n3:修改一个学员信息\n4:查询一个学员信息\nexit:退出学生管理系统\n请输入序号:')54 if choice == '0':55 questudent(slist)56 elif choice == '1':57 addstudent(slist)58 elif choice == '2':59 delstudent(slist)60 elif choice == '3':61 upstudent(slist)62 elif choice == '4':63 questudentnum(slist)64 elif choice == 'exit':65 print("欢迎使用T666的学生管理系统,下次再见")66 exit()67 else:68 print("输入数据不符")69 continue
70
71 if __name__ == '__main__':72 main()