day09 课程(函数 & return & 函数嵌套)
课程:https://www.bilibili.com/video/BV1o4411M71o/?spm_id_from=333.788.videopod.episodes&p=168
9.1 了解函数
9.1.1 目标
函数的作用
函数的使用步骤
函数的参数作用
函数的返回值作用
函数的说明文档
函数嵌套
9.1.2 函数的作用
需求:用户到 ATM 机取钱:
1.输入密码后显示“选择功能”界面
2.查询余额后显示“选择功能”界面
3.取 2000 钱后显示“选择功能”界面
特点:显示“选择功能”界面需要重复输出给用户,怎么实现?

函数就是将一段具有独立功能的代码块整合到一个整体并命名,在需要的位置调用这个名称既可完成对应的需求
注意:函数在开发过程中,可以更高效的实现代码重用
9.2 函数的使用步骤
9.2.1 定义函数
def 函数名(参数): # 参数可选 代码1 代码2 ......
9.2.2 调用函数
函数名(参数) # 参数可选
注意: 1.不同的需求,参数可有可无
2.在 Python 中,函数必须先定义后使用,解释器是从上向下执行
3.函数名自定义,满足标识符规则既可(数字字母下划线组成,不能数字开头,严格区分大小写,见名知意)
9.3 快速体验函数
# 需求: 复现 ATM 取钱功能 # 因为函数要先定义再调用,所以步骤2 和 3要在步骤1的上面书写 def sel_func(): # 3. 封装函数,放到上面 # 2. 确定“选择功能”界面内容 print("查询余额") print("存款") print("取款") # 1. 搭建整体框架(复现需求) print("密码正确登录成功") # 显示“选择功能”界面↓ 调用函数 sel_func() print("您的余额是100000") # 显示“选择功能”界面↓ 调用函数 sel_func() print("取了100元钱") # 显示“选择功能”界面↓ 调用函数 sel_func() # 4. 在需要的位置调用函数(在上面调用位置写函数名称) ------------------------------------------------ 执行后 C:\Users\马俊南\AppData\Local\Microsoft\WindowsApps\python3.13.exe D:\Pycharm\code\day09\02.快速体验函数.py 密码正确登录成功 查询余额 存款 取款 您的余额是100000 查询余额 存款 取款 取了100元钱 查询余额 存款 取款 Process finished with exit code 0
9.4 函数的注意事项
# 1.先调用未定义函数时 # info_print() # 报错 NameError: name 'info_print' is not defined # 定义函数 def info_print(): print("hello world") # 2.调用函数 # info_print() # 不调用函数,不打印 hello world info_print() ------------------------------------------------ 执行后 C:\Users\马俊南\AppData\Local\Microsoft\WindowsApps\python3.13.exe D:\Pycharm\code\day09\03.函数的注意事项.py hello world Process finished with exit code 0
debug调试执行流程:

结论:1.函数先定义后调用,如果先调用会报错
2.如果没有调用函数,函数里面的代码不会执行
3.函数执行流程***
定义函数的时候,函数体内部缩进的代码并没有执行
当调用函数的时候,解释器回到定义函数的地方去执行下方缩进的代码,当这些代码执行完,回到调用函数的地方继续向下执行
9.5 函数的参数的作用
# 思考:完成需求如下,一个函数完成两个数 1和2的加法运算,如何书写程序? # 定义函数 def add_num(): result = 1 + 2 print(result) # 调用函数 add_num() ------------------------------------------------ 执行后 C:\Users\马俊南\AppData\Local\Microsoft\WindowsApps\python3.13.exe D:\Pycharm\code\day09\04.函数的参数的作用.py 3 Process finished with exit code 0
思考:上述 add_num函数只能完成数字1和2的加法运算,如果想要这个函数变得更灵活,可以计算任何用户指定的两个数字的和,如何书写程序?
分析:用户要在调用函数的时候指定具体数字,那么在定义函数的时候就需要接收用户指定的数字,函数调用时指定的数字和定义函数时接收的数字即是函数的参数
# 定义函数的同时定义了接收用户数据的参数 num1 和 num2 def add_num_2(num1, num2): # num1 与 num2 是形参, 定义两个占位符 result = num1 + num2 print(result) # 调用函数时传入了真实的数据 add_num_2(11, 25) # 传入的 11 与 25 是实参,返回 36 add_num_2(3, 5) # 传入实参,任意两个数字都可以计算,返回 8 # add_num_2(1, ) # 当不按照定义的函数参数个数传入参数时,报错丢失参数:TypeError: add_num_2() missing 1 required positional argument: 'num2' ------------------------------------------------ 执行后 C:\Users\马俊南\AppData\Local\Microsoft\WindowsApps\python3.13.exe D:\Pycharm\code\day09\04.函数的参数的作用.py 36 8 Process finished with exit code 0
9.6 体验函数返回值
例如:我们去超市购物,比如买烟,给钱以后,是不是售货员会返回給我们这个商品,在函数中,如果需要返回结果给用户需要使用函数返回值
def buy(): return "烟" # 使用变量保存函数返回值 goods = buy() # 函数返回值返回到函数调用的地方,再赋值给变量 print(goods) ------------------------------------------------ 执行后 C:\Users\马俊南\AppData\Local\Microsoft\WindowsApps\python3.13.exe D:\Pycharm\code\day09\05.体验函数返回值.py 烟 Process finished with exit code 0
总结:return 与 print 之间不同,print 为了打印到显示器便于查看,而 return 是程序调用间返回給程序
9.7 return的特点
def buy(): print("上面会执行么?") # 可以执行 return "烟" print("下面会执行么?") # 不会执行, return 返回值后, 退出当前函数 goods = buy() print(goods) ------------------------------------------------ 执行后 C:\Users\马俊南\AppData\Local\Microsoft\WindowsApps\python3.13.exe D:\Pycharm\code\day09\06.return的特点.py 上面会执行么? 烟 Process finished with exit code 0
return 作用总结:
1.负责函数返回值
2.退出当前函数,导致 return 下方的所有代码(函数体内部)不会执行
9.8 函数返回值的应用
# 需求:制作一个计算器,计算任意两个数字之和,并保存结果 def sum_num(num1, num2): return num1 + num2 # 用result变量保存函数返回值 result = sum_num(1, 2) print(result) ------------------------------------------------ 执行后 C:\Users\马俊南\AppData\Local\Microsoft\WindowsApps\python3.13.exe D:\Pycharm\code\day09\07.函数返回值的应用.py 3 Process finished with exit code 0
9.9 函数的说明文档
思考:定义一个函数后,程序员如何书写程序能够快速提示这个函数的作用?
答:注释
思考:代码多,我们是不是需要在很多代码中找到这个函数定义的位置才能看到注释?如果想更方便的查看函数的作用怎么办?
答:函数的说明文档
注意:函数的说明文档也叫函数的文档说明
help(len) # help 函数作用, 查看函数的说明文档(函数的解释说明信息) ------------------------------------------------ 执行后 C:\Users\马俊南\AppData\Local\Microsoft\WindowsApps\python3.13.exe D:\Pycharm\code\day09\08.函数的说明文档.py Help on built-in function len in module builtins: len(obj, /) Return the number of items in a container. Process finished with exit code 0
9.9.1 语法
# 定义函数的说明文档 def 函数名(参数): """ 说明文档的位置""" 代码1... ...... # 查看函数的说明文档 help(函数名)
9.9.2 快速体验
# 定义函数 def sum_num(num1, num2): """求和函数""" # 函数的说明文档信息 return num1 + num2 # 查看说明文档信息 help(sum_num) ------------------------------------------------ 执行后 C:\Users\马俊南\AppData\Local\Microsoft\WindowsApps\python3.13.exe D:\Pycharm\code\day09\08.函数的说明文档.py Help on function sum_num in module __main__: sum_num(num1, num2) 求和函数 Process finished with exit code 0
9.9.3 高级用法
# 函数说明文档的高级使用 def sum_num(num1, num2): # 输入三个双引号然后回车再回车, Tab 和 回车后输出解释头内容,可以自己添加参数对应的内容 """ 求和函数sum_num :param num1: num1 :param num2: num2 :return: 返回值 """ return num1 + num2 help(sum_num) ------------------------------------------------ 执行后 C:\Users\马俊南\AppData\Local\Microsoft\WindowsApps\python3.13.exe D:\Pycharm\code\day09\08.函数的说明文档.py Help on function sum_num in module __main__: sum_num(num1, num2) 求和函数sum_num :param num1: num1 :param num2: num2 :return: 返回值 Process finished with exit code 0
9.10 函数嵌套调用
所谓函数嵌套调用指的是一个函数里面又调用了另外一个函数
# 需求:两个函数 testA 和 testB -- 在 A里面嵌套调用B def testB(): print("B函数开始------") print("这是B函数testB") print("B函数结束------") def testA(): print("A函数开始......") testB() print("A函数结束......") testA() ------------------------------------------------ 执行后 C:\Users\马俊南\AppData\Local\Microsoft\WindowsApps\python3.13.exe D:\Pycharm\code\day09\09.函数嵌套调用.py A函数开始...... B函数开始------ 这是B函数testB B函数结束------ A函数结束...... Process finished with exit code 0
9.11 函数嵌套调用应用之打印横线图形01
# 1. 打印一条横线 def print_line(): # 定义函数 print("-" * 30) # 打印横线 print_line() # 调用函数 ------------------------------------------------ 执行后 C:\Users\马俊南\AppData\Local\Microsoft\WindowsApps\python3.13.exe D:\Pycharm\code\day09\10.函数嵌套调用应用之打印横线图形01.py ------------------------------ Process finished with exit code 0
9.12 函数嵌套调用应用之打印横线图形02
# 1. 打印一条横线 def print_line(): # 定义函数 print("-" * 30) # 打印横线 # print_line() # 调用函数 def print_lines1(num): # 函数嵌套 while(上下效果一样) i = 0 while i < num: print_line() i += 1 print_lines1(3) # 调用print_lines1 传参3 print("++++++++++分割线++++++++++") def print_lines2(num): # 函数嵌套 for(上下效果一样) for i in range(num): print_line() print_lines2(3) # 调用print_lines2 传参3 ------------------------------------------------ 执行后 C:\Users\马俊南\AppData\Local\Microsoft\WindowsApps\python3.13.exe D:\Pycharm\code\day09\11.函数嵌套调用应用之打印横线图形02.py ------------------------------ ------------------------------ ------------------------------ ++++++++++分割线++++++++++ ------------------------------ ------------------------------ ------------------------------ Process finished with exit code 0
9.13 函数嵌套调用应用之函数计算01
# 1. 求任意三个数据的和 def sum_num(a, b, c): # 三个形参 return a + b + c result = sum_num(1, 2, 3) # 调用函数,传入三个实参 print(result) # 结果 6 ------------------------------------------------ 执行后 C:\Users\马俊南\AppData\Local\Microsoft\WindowsApps\python3.13.exe D:\Pycharm\code\day09\12.函数嵌套调用应用之函数计算01.py 6 Process finished with exit code 0
9.14 函数嵌套调用应用之函数计算02
# 1. 求任意三个数据的和 def sum_num(a, b, c): # 三个形参 return a + b + c # 2. 任意三个数求平均值 def average_num(x, y, z): # 三个形参 sumResult = sum_num(x, y, z) # 调用 sum_num 函数 return sumResult / 3 # 调用sum_num得到和后, 求平均值 average = average_num(4, 3, 8) print(average) ------------------------------------------------ 执行后 C:\Users\马俊南\AppData\Local\Microsoft\WindowsApps\python3.13.exe D:\Pycharm\code\day09\13.函数嵌套调用应用之函数计算02.py 5.0 Process finished with exit code 0
9.15 函数的总结
函数的作用:封装代码,高效的代码重用
函数使用步骤:
1.定义函数
def 函数名(参数): # 参数可选 代码1 代码2 ......
2.调用函数
函数名(参数) # 参数可选
函数的参数:函数调用的时候可以传入真实数据,增大函数的使用灵活性
1.形参:函数定义时书写的参数(非真实数据)
2.实参:函数调用是书写的参数(真实数据)
函数的返回值:
1.作用:(1)函数调用后,返回需要的计算结果。(2)退出当前函数
2.写法:
return 表达式
函数的说明文档
1.作用:保存函数解释说明的信息
2.写法:
def 函数名(参数): """ 说明文档的位置""" 代码1... ......
函数嵌套调用:一个函数内部嵌套调用另外一个函数,为了化简代码量
———————————————————————————————————————————————————————————————————————————
无敌小马爱学习
浙公网安备 33010602011771号