python笔记之函数

python中函数定义是使用def进行定义,函数可以理解为 多个语句代码组成,用来实现单一或者相关功能的代码段,在程序中可以重复调用而无需编写重复代码。

1 def add(a,b):  #定义一个函数
2     c = a+b
3     return c   #返回值,如果没有return语句,则返回值为None

1、函数返回值

函数返回值使用return关键字,可以返回多个值,若没有return语句,则返回值为None

2、函数参数:形参、实参

形参为函数定义时使用的参数名,实参为具体调用时的参数名

1 def add(a,b):  #a,b为形参
2     c = a+b
3     print(c)
4     return c   
5 
6 
7 a1=3  
8 b1=4
9 add(a1,b1) #a1,b1为实参

传递不可变的数据对象,若函数内进行重新赋值实参数据对象值不会被改变

1 def fun(a):
2     a=12
3     return a
4 
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 def fun(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 def login():
 4     user = 'admin11'  #局部变量
 5     print(user)
 6 
 7 def info():
 8     global user
 9     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 def questudent(slist):
 2     print(slist)
 3     print("
")
 4 
 5 def addstudent(slist):
 6     adds = str(input("请输入增加人的姓名:"))
 7     for s in slist:
 8         if s == adds:
 9             print('添加的学员名已存在')
10             break
11     else:
12         slist.append(adds)
13     print(slist)
14     print("
")
15 
16 def delstudent(slist):
17     dels = str(input("请输入删除人的姓名:"))
18     for s in slist:
19         if s == dels:
20             slist.remove(dels)
21             break
22     else:
23         print("删除人的姓名不存在")
24     print(slist)
25     print("
")
26 
27 
28 def upstudent(slist):
29     ups = str(input("请输入需要修改人的姓名:"))
30     upsn = str(input("请输入需要修改后的姓名:"))
31     slen = len(slist)
32     for i in range(slen):
33         if slist[i] == ups:
34             slist[i] = upsn
35             print(slist)
36             break
37     else:
38         print("T666班没有这个学员")
39     print("
")
40 
41 def questudentnum(slist):
42     ques = str(input("请输入查询人的姓名:"))
43     slen = len(slist)
44     for i in range(slen):
45         if slist[i] == ques:
46             print("{0}在座位号{1}的位置".format(ques,i))
47     print("
")
48 
49 
50 def main():
51     slist = ["郭易","汤碗珍"]
52     while True:
53         choice = input('请选择系统功能:
0:显示所有学员信息
1:添加一个学员信息
2:删除一个学员信息
3:修改一个学员信息
4:查询一个学员信息
exit:退出学生管理系统
请输入序号:')
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()
原文地址:https://www.cnblogs.com/heertong/p/12111287.html