一、函数的定义和调用方法
特点:
封装、重复使用
语法格式
函数定义
- 参数列表包含多个参数时,参数值和参数名称是按函数声明时的顺序匹配
- 比较两个数,并返回最大的数
#定义函数,设置函数参数,比较两个数返回最大值
def max(a,b):
if a>b:
return a
else:
return b
#创建两个变量存放两个数
a=12
b=20
#调用函数
print(max(a,b))
- 可能有的同学看不懂有些代码的作用,下面会给大家讲解函数的参数和返回值的使用
二、函数的作用
2.1 学生信息系统
2.2 无参数,无返回值
- 代码编写
#定义函数
def zifu(str):
#打印任何传入的字符串
print(str)
return
#调用函数
zifu("我是大美女")
#再一次调用同一个函数
zifu("我要调用用户自定义函数")
2.3 空函数
- 不实现任何功能
- 代码编写:
#定义一个空函数
def blank():
pass
#使用pass作为占位符
三、函数的参数传递
引入
- 定义一个函数,用来计算两个数的差并把计算结果打印出来
代码编写:
def num1_num():
c=20-8
print(c)
num1_num()
(1)位置参数
- 代码编写
def num2_num(num1,num2):
c=num1-num2
print(c)
#参数按位置顺序传递,位置参数,又叫必须参数
num2_num(15,8)
num1和num2就是用来接受函数传递第二个参数。这时,如果想调用num2_num函数,就需要在调用函数时,在小括号中其参数传递两个数值
- 如果定义多个参数,那在调用函数时,传递的数据要和定义的参数一一对应
- 代码编写:
#定义函数,函数体里面有一个变量c,实现四则运算
def num2(a1,b1,c1):
c=a1+b1-c1
print(c)
#函数调用
num2(12,3,2)
(2)默认值参数
注意:默认参数只能放在位置参数的后面
- 代码编写
def studentinfo(name,age=19): #给形参一个默认值
#打印任何传入的字符串
print("Name:",name)
print("age:", age)
#调用函数
studentinfo(name="tom")
- 可以对默认参数重新赋值
- 定义函数,函数体里面有一个变量C,实现四则运算
- 代码编写:
def num2(a1,b1,c1=2):
c=a1+b1-c1
print(c)
#函数调用
num2(12,3)
(3)不定长参数
*args参数
- 为元组形式输出
- args参数并没有接受到任何数据,所以为一个空元组
- args参数接受到数据,数据以元组的形式输出
- 调用函数,传入多个参数
**kwargs参数
- 为字典形式输出
- 引入: 制作学生信息管理系统
- 编写代码:
print("-----制作学生信息管理系统-----")
def Ganzhuinfo(name,age,*interests,**others):
print(name)
print(age)
print(interests)
print(others)
Ganzhuinfo("ganzhu",20,"汉服","剧本杀","看相声",id=221034,school="计算机创新学院")
- 编写代码:
def computerinfo(name,cpu,*args,**kwargs):
print(name)
print(cpu)
print(args)
print(kwargs)
print("----函数调用多个参数-----")
computerinfo("华硕","i5","8g","1TB+128GB","GTX1050Ti")
- **kwargs要以键值对的形式赋值
- 编写代码:
print("-----**kwargs要以键值对的形式赋值-----")
def computerinfo(name,cpu,*args,**kwargs):
print(name)
print(cpu)
print(args)
print(kwargs)
computerinfo("华硕","i5","8g",Graphic="GTX1050Ti",A=221034)
参数的综合应用
求多个参数的和
- 代码编写:
def sum(*x):
result=0
for i in x:
result+=i
print(result)
sum(1,2,3,4)
求多个参数的积
- 代码编写:
#例 求输入多个参数的积
def sumf(*y):
num=1
for i in y:
num*=i
print(num)
sumf(2,2,2,2)
四、函数的返回值
1.概述
- 在程序中的函数在完成调用之后会给出一个结果,这就是“返回值”
- 函数用return语句返回函数调用的结果。这时return后面的表达式的值就是函数调用的返回值
2.实例引入
- 求两个数之和
- 上述代码中,函数add中包含return语句,意味着这个函数有一个返回值,其返回值就是num1和num2相加的结果
3.函数的四种类型
(1)无参数,无返回值
- 这种类型的函数,既不能接受参数,也不会有返回值
代码编写:
# (1)无参数,无返回值的函数
def studentMenu():
print('-----------')
print(' 男生宿舍信息系统')
print('1、成员介绍')
print('2、宿舍活动')
print('3、退出')
print('-----------')
studentMenu()
(2)无参数,有返回值
- 该类型虽然不能接受参数,但可以有值返回,采取数据时会采用此类数据
代码编写:
# 获取大学新生入学标准年龄
def getAge():
return 19
age = getAge()
print("当前大学新生的入学标准年龄为:", age)
(3)有参数,无返回值
- 有参数却无返回值相对用得极少。因为函数作为功能模块,绝大数情况下只要传入了参数就会希望使用返回值
代码编写:
# (3)有参数,无返回值的函数
def average(num1, num2):
result = (num1 + num2) / 2
print("平均值为:%d" % result)
average(4, 2)
(4)有参数,有返回值
- 该类函数既能接受参数,还可以有值返回,使用此类函数应对处理数据并需要结果的应用。
五、函数案例—学生信息管理系统
- 学生信息管理是用来协助管理高校面向学生设计的一个多功能数据管理平台,是一款在校实用为小工具。通过这个案例的制作,使得大家能够掌握实际应用中四种类型函数的使用,使得函数来完成名片管理的各个功能,并且根据用户键盘输入来选择对于的函数实现相应功能。
- 需求:通过接受用户键盘的序号(1~6)响应用户选择的功能
1、定义一个功能菜单函数,响应用户选择
- 代码编写:
#一、定义一个功能菜单函数,响应用户选择
def funcMenu():#无参数无返回值函数
print("-----学生信息管理系统-----")
print("1.添加学生")
print("2.删除学生")
print("3.修改学生")
print("4.查询学生")
print("5.获取所有学生用户信息")
print("6.退出系统")
print("-" * 15)
2、定义一个导入选项的函数,接收用户从键盘输入的选择序号
- 代码编写:
#二、定义一个导入选项的函数,接收用户从键盘输入的选择序号
def gatSelcet():#无参数有返回值函数
selectNum=int(input("请输入选择的序号:"))
return selectNum
3、定义数据初值,保存原有的学生信息
- 代码编写:
#三、定义数据初值,保存原有的学生信息
#保存学生用户的信息,是可以用到列表,但是每个学生数据库上的信息,可能会包含姓名,性别,这个时候显然列表是无法做到的,所以我们用字典存储比较方便
student_values={
"张三":{"性别":"男","出生日期":"2004-5-10","课程名":"python","成绩":"85"},
"李四":{"性别":"女","出生日期":"2003-7-11","课程名":"java","成绩":"90"},
"王五":{"性别":"男","出生日期":"2004-8-24","课程名":"数据库基础","成绩":"71.2"},
}
4、添加学生用户信息
- 代码编写:
#四、添加学生用户信息
#用户选择序号1,提示用户需要添加学生姓名、性别、出生日期等信息,然后保存到上面定义的字典中去
def addStulnfo():
print("你当前是做添加用户操作,请输入要添加的学生用户的信息---")
name=input("姓名:")
sex=input("性别:")
birthday= input("出生日期:")
courseName = input("课程名:")
grade = input("成绩:")
student_values[name]={"性别":sex,"出生日期":birthday,"课程名":courseName,"成绩":grade}
for i in student_values.items():
print(i)
#print(student_values)#输出学生用户信息
5、删除学生用户信息
- 代码编写:
#五、删除学生用户信息
#用户选择序号2,提示用户需要删除的学生用户信息
def delStulnfo():
print("你当前是做删除用户操作,请输入要删除的学生用户的信息---")
name=input("姓名:")
del student_values[name]
for i in student_values.items():#输出学生用户信息
print(i)
6、修改学生用户信息
- 代码编写:
#六、修改学生用户信息
#用户选择序号3,提示用户需要修改的学生用户信息
def modStulnfo():
print("你当前是做修改用户操作,请输入要修改的学生用户的信息---")
name = input("姓名:")
sex = input("请输入要修改后的,\n性别:")
birthday = input("请输入要修改后的,\n出生日期:")
courseName = input("请输入要修改后的,\n课程名:")
grade = input("请输入要修改后的,\n成绩:")
print(student_values)# 输出学生用户信息
7、查询学生用户信息
- 代码编写:
#七、查询学生用户信息
#用户选择序号4,提示用户需要查询的学生用户信息
def secStulnfo():
print("你当前是查询用户操作,请输入要查询的学生用户的信息---")
name = input("姓名:")
print(student_values[name])#输出指定学生用户信息
8、显示学生用户信息
- 代码编写:
#八、显示学生用户信息
#用户选择序号5,提示用户需要显示的学生用户信息
def showStulnfo():
print("你当前是显示用户操作,当前的管理系统全部用户信息如下:")
for i in student_values.items():
print(i)
9、退出学生用户信息
- 代码编写:
#九、退出学生用户信息
#用户选择序号6,提示用户需要退出系统
def exitStulnfo():
print("你已经退出学生信息管理系统,谢谢使用!")
10、根据用户输入的选择序号,判断并执行不同功能
while True:
funcMenu()#调用显示菜单函数
number = gatSelcet()#调用用户选项序号函数
if number==1:
addStulnfo()
pass
elif number==2:
delStulnfo()
pass
elif number==3:
modStulnfo()
pass
elif number==4:
secStulnfo()
pass
elif number==5:
showStulnfo()
pass
elif number == 6:
exitStulnfo()
break
else:
print("你的输入有误,请重新输入....")