Python函数
函数的定义
# java
public void 方法名(形参1,形参2,...){
方法体;
return 值;
}
# python
def 函数名(形参1,形参2,...):
函数体
return 值
函数的调用:
函数名(实参1,实参2,...)
总结:函数通过def定义,通过return返回,如果没有return那么返回None。
作用:实现一种功能,是一种封装。
# 定义
def add():
print("Hello World")
# 调用
add()
# 在主方法调用(main+“回车” 自动生成)
if__name__=='__main__':
add()
根据是否有参数和是否有返回值,可以把函数分为四类
1、无参无返回(无返回表示返回None)
# 定义:
def run():
print("我独自一个人在跑步")
# 调用:
run()
2、无参有返回
# 定义:
def xzy():
print("我在努力写作业")
return "作业"
# 调用:
return_value=xzy()
print(return_value)
3、有参无返回
# 定义:
def qj(money,jinzi,shoushi):
print("我抢劫完就跑了")
# 调用:
qiangjie("钱","金子","首饰")
4、有参有返回
# 定义:
def add(a,b):
c=a+b
return c
# 调用:
sum=add(30,40)
print(sum)
总结:有参数就要传值,有返回值一般就要接收
有特别含义的参数
1.有默认值的参数
# 定义:(两个参数只有一个有默认值要写到后面)
def adds(a,b=100):
c=a+b
return c
# 调用:
print(adds(30))
print(adds(30,200))
2.有*不定长的参数(这种参数会把传入的值组合成一个元组)
# 定义:
def add(a,*b):
print(a)
print(b)
# 调用:
add(30)
add(30,100)
add(30,100,200,300,400,500,600)
3.带**不定长的参数(这种参数会把传入的值组合成一个字典)
# 定义:
def adds(a,**b):
print(a)
print(b)
# 调用:
adds(30)
adds(30,aaa=2,bbb=3,ccc=4)
嵌套函数
1.嵌套调用(在一个函数里面调用另一个或多个函数)
def sort(lis):
for cs in range(len(lis)):
for a in range(len(lis)-1):
if lis[a]>lis[a+1]:
temp=lis[a]
lis[a]=lis[a+1]
lis[a+1]=temp
test()
return lis
def test():
print("WWWWWWWWW")
2.嵌套定义(内部的函数只能在内部调用)
def a():
test=1
print(test)
def b():
test=2
print(test)
def c():
test=3
print(test)
b()
函数递归
1.自己调用自己
def a():
print("aaaaaa")
a()
2.函数之间相互调用
def a():
print("aaaaaa")
b()
def b()
print("bbbbbb")
a()
匿名函数lambda
sum=lambda a,b:a+b
print(sum(10,20))
值传递和引用传递
- 值传递:只是传递变量的值
- 引用传递:传递的是指向值的内存地址。例如(传list和dict)
当函数传入list或者是dict时,则是引用传递
练习
1.写函数,接收两个数字参数,返回最大值
def num(a,b):
max=a if a>b else b
return max
print(num(30,23))
2.写函数,获取传入列表的所有奇数位索引对应的元素,并将其作为新列表返回。
def getJs(lis):
new_list=[]
for a in range(len(lis)):
if a%2==0:
new_list.append(lis[a])
return new_list
print(getJs([82,42,60,12,33,79,19,43]))
3.写函数,判断用户传入的对象(列表)长度是否大于5,如果大于5,那么仅保留前五个长度的内容并返回。不大于5返回本身。
例如:
传入1:[34,23,52,352,666,3523,5] 返回1:[34,23,52,352,666]
传入2:[34,23,52] 返回2:[34,23,52]
def ls(lis):
new_lis=[]
if len(lis)>5:
new_lis.append(lis[0])
new_lis.append(lis[1])
new_lis.append(lis[2])
new_lis.append(lis[3])
new_lis.append(lis[4])
return new_lis
else:
return lis
print(ls([34,23,52,352,666,3523,5]))
print(ls([4,23,52]))
4.写函数,检查传入的字符串是否含有空字符串,返回结果,包含空字符串返回True,不包含返回False
例如:
传入:"hello world"
返回:True
def hw(a):
if ' ' in a:
return True
else:
return False
print(hw('hello world'))
5.写函数,接收n个数字,求这些数字的和
def su(*a):
s = sum(a)
return s
print(su(12,21,32))
print(su(3,2,1))
6.定义一个函数,实现两个数四则运算,要注意有3个参数,分别是运算符和两个运算的数字.
例如:
传入:10,*,20
返回:200
def a(x,y,z):
if z=="*":
i=int(x)*int(y)
return i
elif z=="/":
i=int(x)/int(y)
return i
elif z=="+":
i=int(x)+int(y)
return i
elif z=="-":
i=int(x)-int(y)
return i
else:
print("请输入两个数字和“+、-、*、\ ”其中一个运算符")
print(a(10,20,"*"))
print(a(30,40,"+"))
7.实现学生管理系统,完成对学员的增,删,改,查和退出学生管理系统。
要求1:使用一个list用于保存学生的姓名。
要求2:输入0显示所有学员信息,1代表增加,2代表删除,3代表修改,4代表查询,exit代表退出学生管理系统。每一个功能定义一个自定义函数。界面如下:
系统界面如下:
-----------------------欢迎进入T666班学生管理系统-----------------------------
请选择系统功能:
0:显示所有学员信息
1:添加一个学员信息
2:删除一个学员信息
3:修改一个学员信息
4:查询一个学员信息
exit:退出学生管理系统
'''
lis=["郭易","汤碗珍"]
'''
(0)输入0后效果如下:
0
["郭易","汤碗珍"..]
'''
def all():
print(lis)
'''
(1)输入1后效果如下:
1
请输入增加人的姓名:张三
["郭易","汤碗珍",'张三'..]
'''
def insert():
i=input("请输入增加人的姓名:")
lis.append(i)
print(lis)
'''
(2)输入2后效果如下:
2
请输入删除人的姓名:张三
["郭易","汤碗珍"..]
'''
def delete():
d=input("请输入删除人的姓名:")
lis.remove(d)
print(lis)
'''
(3)输入3后效果如下:<注意:如果list中没有这个学员则打印:T666班没有这个学员>
3
请输入需要修改人的姓名:张三
请输入需要修改后的姓名:李四
["郭易","汤碗珍",'李四'..]
'''
def update():
uq=input("请输入需要修改人的姓名:")
uh=input("请输入需要修改后的姓名:")
xb=lis.index(uq)
lis.pop(xb)
lis.insert(xb,uh)
print(lis)
'''
(4)输入4后效果如下:<注意:如果list中没有这个学员则打印:T666班没有这个学员>
请输入查询人的姓名:张三
张三在座位号(3<下标>)的位置。
'''
def select():
s=input("请输入查询人的姓名:")
if s in lis:
xb=lis.index(s)
print(s+"在座位号"+str(xb)+"的位置")
else:
print("未找到此同学,请输入正确名字")
'''
(5)输入exit后效果如下:
exit
欢迎使用T666的学生管理系统,下次再见。
'''
def exit():
print("欢迎使用T666的学生管理系统,下次再见。")
while True:
if __name__ == '__main__':
xz=input("\n"+"-----------------------欢迎进入T666班学生管理系统-----------------------------"
+"\n"+"请选择系统功能:"+"\n"
+"0:显示所有学员信息"
+"\n"+"1:添加一个学员信息"
+"\n"+"2:删除一个学员信息"
+"\n"+"3:修改一个学员信息"
+"\n"+"4:查询一个学员信息"
+"\n"+"exit:退出学生管理系统"+"\n")
if xz=="0":
all()
elif xz=="1":
insert()
elif xz=="2":
delete()
elif xz=="3":
update()
elif xz=="4":
select()
elif xz=="exit":
exit()
break