一.函数
作用:① 代码重用(代码重复使用)
② 模块化编程(模块化编程的核心就是函数,一般是把一个系统分解为若干个功能, 每个功能就是一个函数)
在编程领域,编程可以分为两大类:① 模块化编程 ② 面向对象编程
1.什么是函数
所谓函数就是一个被命名的独立的完成特定功能的代码段并可能给调用它的一个程序一个返回值。
2.函数的定义
基本语法:
def 函数名称([参数1,参数2,....]):
函数体
.....
[return 返回值]
3.函数的调用
#定义函数
def 函数名称([参数1,参数2,....])
函数体
......
[return 返回值]
#调用函数
函数名称(参数1,参数 2....)
4.return返回值
return可以退出当前函数,导致return下方的代码不执行
def return_num():
return 1
return 2
result = return_num()
print(result) # 1
5.通过一个例子引入函数
#第一步:见到一个老师,打一声招呼
print('您好')
#第二步:见到一个老师,打一声招呼
print('您好')
#第二步:见到一个老师,打一声招呼
print('您好')
#定义函数
def dat(name):
print(f'{name},您好')
#调用函数
#见到张老师,打一声招呼
dat('老张')
#见到李老师,打一声招呼
dat('老李')
#见到汪老师,打一声招呼
dat('老王')
#定义函数
def greet(name):
return name+',您好'
# 调用函数
# 见到了张老师,打一声招呼
print(greet('老张'))
# 见到了李老师,打一声招呼
print(greet('老李'))
# 见到了王老师,打一声招呼
print(greet('老王'))
def size(num1,num2):
jia = num1+num2
jian = num1 - num2
cheng = num1 * num2
chu = num1 / num2
return jia,jian,cheng,chu
print(size(20,5))
二.函数的说明文档(注释)
1.定义函数的说明文档
# 1、定义一个menu菜单函数
def menu():
pass# 2、定义通讯录增加操作方法
def add_student():
""" 函数的说明文档:add_student方法不需要传递任何参数,其功能就是实现对通讯录的增加操作 """
pass# 3、定义通讯录删除操作方法
def del_student():
pass# 4、定义通讯录修改操作方法
def modify_student():
pass# 5、定义通讯录查询操作方法
def find_student():
passhelp(add_student)
""""add_student()
函数的说明文档:add_student方法不需要传递任何参数,其功能就是实现对通讯录的增加操作"‘
② 调用函数的说明文档
help(函数名称)
# 定义一个generate_code()函数
def generate_code(num):
""" generate_code方法主要用于生成指定长度的验证码,有一个num参数,需要传递一个int类型的数值,其return返回结果为num长度的随机验证码 """
import random
# 第一步:定义一个字符串
str1 = "0123456789abcdefghijkmnpqrstuvwxyzABCDEFGHJKLMNPQRSTUVWXYZ"
# 第二步:循环num次,代表生成num长度的字符串
code = ''
for i in range(num):
# 第三步:从字符串中随机抽取num个字符
index = random.randint(0, len(str1) - 1)
code += str1[index]
# 第四步:使用return返回验证码
return code
# 求帮助(查看generate_code函数的作用以及需要传递的参数)
# help(generate_code)
# 调用函数
print(generate_code(6))
三.函数的嵌套
1.什么是函数的嵌套
一个函数里面又调用了另一个函数,先执行本函数内函数,在执行本函数
2.实例
def test1():
print("*" * 50)
print("test 1")
print("*" * 50)
def test2():
print("-" * 50)
print("test 2")
test1()
print("-" * 50)
test2()
四.全局变量和局部变量
1.什么是变量作用域
变量作用域指的是变量的作用范围(变量在哪里可用,在哪里不可用),主要分为两类:局部变量和全局变量。
2.变量作用范围
全局变量:在整个程序范围内都可以直接使用
局部变量:在函数的调用过程中,开始定义,函数运行过程中生效,函数执行完毕后,销毁
3.global关键字
把局部变量修改成全局变量
# 定义全局变量num = 10
num = 10
# 定义一个函数func
def func():
# 尝试在局部作用域中修改全局变量
num = 20
# 调用函数func
func()
# 尝试访问全局变量num
print(num)
# 定义全局变量num = 10
num = 10
# 定义一个函数func
def func():
# 尝试在局部作用域中修改全局变量
global num
num = 20
# 调用函数func
func()
# 尝试访问全局变量num
print(num)
五. 开发通讯录管理系统
1.步骤
① 显示功能界面
② 提示用户输入要操作的功能编号
③ 根据用户输入的序号执行相关功能 => if...elif...else
④ 如何让程序一直执行下去,而不是选择某个功能后,程序就退出了 => while True
⑤ 根据用户输入的序号,完成系统中的每一个功能
所有功能都有使用前提:必须共享一套数据 => info = [{}, {}, {}
# 7、定义一个全局变量,结构[{}, {}, {}]
students = []
# 2、封装一个menu函数,用于打印功能菜单
def menu():
print('-' * 40)
print('通讯录管理系统V1.0')
print('1、添加学员信息')
print('2、删除学员信息')
print('3、修改学员信息')
print('4、查询学员信息')
print('5、遍历所有学员信息')
print('6、退出系统')
print('-' * 40)
# 6、封装一个函数add_student(),添加学员信息
def add_student():
# 提示用户要输入学员的信息(name、age、mobile)
name = input('请输入学员的姓名:')
age = input('请输入学员的年龄:')
mobile = input('请输入学员的电话:')
# 声明全局变量
global students
student = {}
student['name'] = name
student['age'] = age
student['mobile'] = mobile
students.append(student)
print('信息已添加成功!')
# 7、封装一个del_student()函数,删除学员信息
def del_student():
# 提示用户输入要删除学员的姓名
name = input('请输入要删除学员的姓名:')
# 声明全局变量
global students
for student in students:
if student['name'] == name:
# 找到了要删除的学员
students.remove(student)
print('信息已删除成功!')
break
else:
print('暂未查询到任何相关信息...')
# 8、edit_student()函数,修改学员信息
def edit_student():
# 提示用户输入要修改学员的姓名
name = input('请输入要修改学员的姓名:')
# 声明全局变量
global students
for student in students:
if student['name'] == name:
# 找到了要修改的学员信息
student['age'] = int(input('请输入要修改学员的年龄:'))
student['mobile'] = input('请输入要修改学员的电话:')
print('信息已更新成功!')
break
else:
print('暂未查询到任何相关信息...')
# 封装一个show_students()函数,遍历所有学员信息
def show_students():
# 声明全局变量
global students
for student in students:
print(student)
# 1、编写一个while死循环
while True:
menu()
# 3、提示用户输入要操作的功能编号
num = int(input('请输入要操作的功能编号:'))
# 4、编写if多条件分支语句,可以根据用户的输入执行相应的功能
if num == 1:
# 添加学员信息
add_student()
elif num == 2:
# 删除学员信息
del_student()
elif num == 3:
# 修改学员信息
edit_student()
elif num == 4:
# 查询学员信息(作业)
find_student()
elif num == 5:
# 遍历所有学员信息
show_students()
elif num == 6:
# 5、退出系统
print('感谢您使用通讯录V1.0系统,欢迎下次继续使用!')
break
else:
print('您输入的信息有误,请重新输入')