文章目录
- 函数
- 什么是函数
- 为什么学习函数
- 函数定义
- 函数的传入参数
- 函数的返回值
- 返回值基础
- None返回值
 
- 函数说明文档
- 函数的嵌套调用
- 定义
- 代码示例
 
- 全局变量和局部变量
- 全局变量
- global变量
- 局部变量
 
- 函数综合案例
 
函数
什么是函数
- 组织好的,可重复使用的、用来实现特定功能的代码段
为什么学习函数
-  为了得到一个针对特定需求,可供重复利用的代码段 
-  提高程序利用性,减少重复代码,提高开发效率 
函数定义
- 函数定义语法
def 函数名(传入参数):函数体return 返回值
- 函数调用语法
函数名(参数列表)
-  注意事项 -  参数不需要可以省略 
-  返回值不需要可以省略 
-  函数必须先定义后使用 
 
-  
函数的传入参数
-  功能描述:在函数进行计算时,接收外部提供的数据 
-  代码示例 
def add(a, b):return a + bprint(add(1, 1))
-  注意 -  多个参数之前使用逗号隔开 
-  调用传入参数时,按照顺序传入,使用逗号分隔 
-  在定义函数时的参数称为形参,在调用时传入的参数称为实参 
 
-  
函数的返回值
返回值基础
-  定义:函数在执行完成后返回给调用方的结果 
-  使用关键字return来返回结果 
-  函数体遇到return之后就结束,return之后的逻辑不会在执行 
None返回值
-  如果函数没有使用return语句返回数据,此时python中默认返回了None值 
-  None是python中一个特殊的字面量,其类型是: 
-  代码示例 
def sayHi():print('hi')result = sayHi()
print(result)
print(type(result))
-  应用场景 -  用在函数无返回值的场景 
-  用在if判断上 -  None等同于False 
-  一般在函数中主动返回None,配合if判断做相关处理 
 def checkAge(age):if age > 18:return "ok"else:return Noneret = checkAge(16) if not ret:print("未满18")
-  
-  用于声明无内容的变量上 
-  定义变量,但暂时不需要变量有具体的值,可以用None来代替 
 name=None
-  
函数说明文档
-  通过多行注释的方式,对函数进行解释说明,内容应写在函数体之前 
-  语法 
def func(x, y):"""函数说明:param x: 形参x的说明:param y: 形参y的说明:return: 返回值说明"""函数体return 返回值
函数的嵌套调用
定义
- 嵌套调用:一个函数里面又调用了另一个函数
代码示例
def func_b():print('-------2-------')def func_a():print('-------1-------')func_b()print('-------3-------')func_a()
-  调用流程 -  先执行调用func_a 
-  在func_a中在调用func_b 
-  执行完func_b的所有逻辑在返回func_a中调用func_b的位置 
-  继续执行完剩余的func_a函数逻辑 
 
-  
全局变量和局部变量
- 作用域:变量的作用范围,在哪里可见,在哪里不可见
全局变量
-  在函数体内,体外都能生效的变量 
-  代码示例 
def func_b():num = 20print(f"函数体内访问:num = {num}")func_b()
print(f"函数体外访问:num = {num}")
- 运行结果

global变量
-  引入:可以看到上面的全局变量中,将num改为20,在函数内生效了,但是出了函数后,num的值又变成了10 
-  global关键字,可以在函数体内部声明局部变量为全局变量 
-  代码示例 
num1 = 10def func_c():global num1num1 = 20print(f"函数体内访问:num1 = {num1}")func_c()
print(f"函数体外访问:num1 = {num1}")
- 运行结果

局部变量
-  定义在函数体内部的变量,只在函数体内生效 
-  作用:在函数体内部,临时保存数据,当函数调用完后,则销毁局部变量 
-  代码示例 
def func_a():a = 10print(f"函数体内:a={a}")func_a()
# NameError: name 'a' is not defined
# print("函数体外:{}", a)
函数综合案例
- 需求描述

- 代码示例
# *_*coding:utf-8 *_*money = 1000
name = Nonename = input("请输入姓名:")def show_menu():print("-------主菜单--------")print(f"{name}您好,欢迎登录ATM机")print("查询余额 [输入1]")print("存款 [输入2]")print("取款 [输入3]")print("退出 [输入4]")def get_balance():print("------查询余额--------")print(f"{name}您的余额还有{money}元")def save_money(num):global moneymoney += numprint("------存款--------")print(f"存款{num}元成功")print(f"{name}您的余额还有{money}元")def load_monry(num):global moneymoney -= numprint("------取款--------")print(f"取款{num}元成功")print(f"{name}您的余额还有{money}元")def main():while (True):show_menu()choice = int(input("请输入你的操作选项:"))if choice == 1:get_balance()elif choice == 2:num = int(input("请输入你要存的钱:"))save_money(num)elif choice == 3:num = int(input("请输入你要取的钱:"))load_monry(num)elif choice == 4:print("即将退出...")returnmain()