一、函数介绍
1.1 函数:
函数:是组织好的,可重复使用的,用来实现特定功能的代码段。
我们使用过的:input()、print()、str()、int()等都是Python的内置函数
二、函数的定义
2.1 函数的定义:
2.2 函数的调用:
函数名(参数)
注意事项:
① 参数如不需要,可以省略
② 返回值如不需要,可以省略
③ 函数必须先定义后使用
三、函数的参数
3.1 传入参数的功能是:
在函数进行计算的时候,接受外部(调用时)提供的数据
有如下代码,完成了2个数字相加的功能:
函数的功能非常局限,只能计算1 + 2。
有没有可能实现:每一次使用函数,去计算用户指定的2个数字,而非每次都是1 + 2呢?
可以的,使用函数的传入参数功能,即可实现。
3.2 传参定义:
基于函数的定义语法:
可以有如下函数定义:
实现了,每次计算的是x + y,而非固定的1 + 2
x + y的值,可以在调用函数的时候指定。
3.3 语法解析
语法解析:
形式参数是在函数定义时指定的,它们是函数内部的占位符,用于表示函数可以接收的参数。形参在函数定义过程中提供了一种方式来指定传入值的类型和数量,它们在函数体内被用作变量。参数之间使用逗号进行分隔。
实际参数则是在函数调用时提供的,这些是传递给函数的真实值,函数会使用这些具体的值来执行操作或计算。传入的时候,按照顺序传入数据,使用逗号分隔。
3.4 传入的参赛
传入参数的数量是不受限制的。
可以不使用参数
也可以仅使用任意N个参数
四、函数的返回值
4.1 什么是返回值:
我们生活中的返回值:
我们程序中的返回值:
如图代码
定义两数相加的函数功能。完成功能后,会将相加的结果返回给函数调用者
所以,变量r接收到了函数的执行结果。
综上所述:
所谓“返回值”,就是程序中函数完成事情后,最后给调用者的结果
4.2 返回值的语法:
语法格式如图:
如图,变量就能接收到函数的返回值
语法就是:通过return关键字,就能向调用者返回数据
思考:如果函数没有使用return语句返回数据,那么函数有返回值吗?
4.3 None类型:
如果函数没有使用return语句返回数据,那么函数有返回值吗?
实际上是:有的。
Python中有一个特殊的字面量:None,其类型是:<class 'NoneType'>
无返回值的函数,实际上就是返回了:None这个字面量
None表示:空的、无实际意义的意思
函数返回的None,就表示,这个函数没有返回什么有意义的内容。
也就是返回了空的意思。
演示:
None可以主动使用return返回,效果等同于不写return语句:
4.4 None类型的应用场景
None作为一个特殊的字面量,用于表示:空、无意义,其有非常多的应用场景。
•用在函数无返回值上
•用在if判断上
在 if 判断中, None 等同于 False
一般用于在函数中主动返回None,配合 if 判断做相关处理
•用于声明无内容的变量上
定义变量,但暂时不需要变量有具体值,可以用 None 来代替
五、函数说明文档
5.1 函数的说明:
函数是纯代码语言,想要理解其含义,就需要一行行的去阅读理解代码,效率比较低。
我们可以给函数添加说明文档,辅助理解函数的作用。
语法如下:
通过多行注释的形式,对函数进行说明解释
•内容应写在函数体之前
5.2 在PyCharm中查看函数说明文档
在PyCharm编写代码时,可以通过鼠标悬停,查看调用函数的说明文档
六、函数的嵌套调用、
6.1 什么是函数的嵌套
所谓函数嵌套调用指的是一个函数里面又调用了另外一个函数
执行过程
- 首先,程序开始执行 func_b() 函数。
- 在 func_b() 函数内部,首先执行的是 print("--------1-------"),打印出 --------1-------。
- 然后,func_b() 内部调用了 func_a() 函数,于是程序接着进入到 func_a() 函数。
- 在 func_a() 函数内部,执行 print("--------2-------"),打印出 --------2-------。
- func_a() 函数执行完毕后,控制权回到 func_b() 函数,继续执行下一行 print("--------3-------"),打印出 --------3-------。
- func_b() 函数执行完毕。
这表示首先输出了 func_b() 的起始部分,然后是 func_a() 的输出,最后是 func_b() 的结束部分。
如果函数A中,调用了另外一个函数B,那么先把函数B中的任务都执行完毕之后才会回到上次 函数A执行的位置
七、变量的作用域
7.1 局部变量
变量作用域指的是变量的作用范围(变量在哪里可用,在哪里不可用)
主要分为两类:局部变量和全局变量
所谓局部变量是定义在函数体内部的变量,即只在函数体内部生效
变量a是定义在`testA`函数内部的变量,在函数外部访问则立即报错.
局部变量的作用:在函数体内部,临时保存数据,即当函数调用完成后,则销毁局部变量
7.2 全局变量:
所谓全局变量,指的是在函数体内、外都能生效的变量
如果有一个数据,在函数A和函数B中都要使用,该怎么办?
将这个数据存储在一个全局变量里面
7.3 global关键字
`testB`函数需要修改变量num的值为200,如何修改程序?
`testB`函数内部的 num = 200 是定义了一个局部变量
☆ 使用 global关键字 可以在函数内部声明变量为全局变量, 如下所示
八、综合案例
8.1 案例要求:
定义一个全局变量:money,用来记录银行卡余额(默认5000000)
定义一个全局变量:name,用来记录客户姓名(启动程序时输入)
定义如下的函数:
•查询余额函数
•存款函数
•取款函数
•主菜单函数
要求:
•程序启动后要求输入客户姓名
•查询余额、存款、取款后都会返回主菜单
•存款、取款后,都应显示一下当前余额
•客户选择退出或输入错误,程序会退出,否则一直运行
8.2 代码:
# 全局变量 money = 5000000 # 初始化余额为5000000 name = "" # 客户姓名,初始为空,将在程序启动时获取 def check_balance(): """查询余额函数""" # 打印客户的姓名和当前余额,并调用主菜单函数 print(f"{name},您的当前余额为:{money}") main_menu() def deposit(): """存款函数""" global money # 声明money为全局变量,以便在函数内部修改 # 获取用户输入的存款金额,并转换为浮点数 amount = float(input("请输入存款金额:")) # 更新余额,增加存款金额 money += amount # 打印存款成功信息和当前余额,并调用主菜单函数 print(f"存款成功,您的当前余额为:{money}") main_menu() def withdraw(): """取款函数""" global money # 声明money为全局变量,以便在函数内部修改 # 获取用户输入的取款金额,并转换为浮点数 amount = float(input("请输入取款金额:")) # 检查取款金额是否大于余额 if amount > money: # 如果取款金额大于余额,打印余额不足信息 print("余额不足,取款失败。") else: # 如果取款金额小于或等于余额,更新余额,减少取款金额 money -= amount # 打印取款成功信息和当前余额,并调用主菜单函数 print(f"取款成功,您的当前余额为:{money}") main_menu() def main_menu(): """主菜单函数""" # 打印主菜单选项 print("\n欢迎进入银行系统,请选择操作:") print("1. 查询余额") print("2. 存款") print("3. 取款") print("4. 退出") # 获取用户输入的选项 choice = input("请输入选项(1-4):") # 根据用户的选择调用相应的函数 if choice == "1": check_balance() elif choice == "2": deposit() elif choice == "3": withdraw() elif choice == "4": # 如果用户选择退出,打印感谢信息并退出程序 print("感谢使用,再见!") exit() else: # 如果用户输入错误,打印错误信息并重新显示主菜单 print("输入错误,请重新输入。") main_menu() # 程序启动点 if __name__ == "__main__": # 获取用户输入的姓名 name = input("请输入客户姓名:") # 打印欢迎信息 print(f"欢迎{name}使用银行系统") # 显示主菜单 main_menu()
8.3 运行结果:
📝大佬觉得本文有所裨益,不妨轻点一下👍给予鼓励吧!
❤️❤️❤️本人虽努力,但能力尚浅,若有不足之处,恳请各位大佬不吝赐教,您的批评指正将是我进步的动力!😊😊😊
💖💖💖若您认为此篇文章对您有所帮助,烦请点赞👍并收藏🌟,您的支持是我前行的最大动力!
🚀🚀🚀任务在默默中完成,价值在悄然间提升。让我们携手共进,一起加油,迎接更美好的未来!🌈🌈🌈