函数
是组织好的,可重复使用的,用来实现特定功能的代码段
定义
def 函数名 (传入参数):
函数体
return 返回值
调用
函数名(参数)
- 函数必须先定义后调用
name = "visual_studio_code"
name_1 = "visual"
name_2 = "studio"
name_3 = "code"
# 定义一个计算长度的函数
def my_len(data):
count = 0
# 数据集是data,小心别弄错了
for i in data:
count += 1
print(f"该字符串的长度为{count}")
my_len(name)
my_len(name_1)
my_len(name_2)
my_len(name_3)
函数的参数
传入参数功能:在函数进行计算的时候,接受外部(调用时)提供的数据
# x,y 形式参数
def add(x,y):
sum = x + y
print(f"{x} + {y}的结果是{sum}")
# 10,19 实际参数
add(10,19)
函数的返回值
程序中函数完成事情后,最后给调用者的结果
函数体遇到return则结束,后面不会再执行
语法格式
def 函数(参数…)
函数体
return 返回值
变量 = 函数(实参)
# sum就是返回值
def add(x,y):
sum = x + y
return sum
# 返回值返回给r
r = add(2,4)
print(f"2 + 4 结果是{r}")
None类型
特殊字面量
表示:空的,无实际意义的内容
应用场景:
- 用在函数无返回值上
- 在if 判断中,None等同于False
- 一般用于在函数中主动返回None,配合if判断做相关处理
def check_age(age):
if age > 18:
return "yes"
else :
return None
result = check_age(12)
if not result :
# 进入if表示result是None值,也即是Flase
print("小于18岁")
函数的嵌套使用
指一个函数里面又调用了另一个函数
函数A中执行到函数B的语句时,会将函数B全部执行完成后,继续执行函数A的剩余内容
# 定义函数func_b
def func_b():
print("麦当劳")
# 定义函数func_a,并在内部调用func_b
def func_a():
print("肯德基")
# 调用func_b
func_b()
print("汉堡王")
# 调用函数func_a,这里开始执行!前面不要空格,否则无法输出结果
func_a()
变量的作用域
指变量的作用范围,在哪里可用,在哪里不可用
- 局部变量
- 全部变量
# 局部变量,作用范围:仅限函数体中
def func_a():
kfc = "肯德基"
print(kfc)
func_a()
# 全局变量,作用范围:函数体内体外都可以用使用
mdl = "麦当劳"
def func_b():
print(f"func_b:{mdl}")
def func_c():
# mdl在函数中变成了局部变量
mdl = "m记"
print(f"func_b:{mdl}")
func_b()
func_c()
print(f"mdl在func_c函数中被修改了,但是函数外仍然是:{mdl}")
global关键字
使用该关键字,可以在函数内部声明变量是全部变量
# 全局变量,作用范围:函数体内体外都可以用使用
mdl = "麦当劳"
def func_b():
print(f"func_b:{mdl}")
def func_c():
# 设置内部定义的变量是全局变量
global mdl
mdl = "m记"
print(f"func_b:{mdl}")
func_b()
func_c()
print(f"mdl在func_c函数中被修改了并加上了global,代表改变的是全局变量,所以是:{mdl}")
函数综合案例
- 定义一个全局变量money,用来记录银行卡的余额(默认有五百万)(要用到global关键字)
- 定义一个全局变量name,用来记录客户的姓名
- 定义函数:查询余额函数,存款函数,取款函数,主菜单函数
- 要求:
- 程序启动后要求输入客户姓名,
- 查询余额,存款,取款后都会返回主菜单(continue)
- 存款,取款后都显示当前余额(调用查询函数)
- 客户选择退出或输入错误,程序退出(break),否则一直执行
# 定义全局变量money,name
money = 5000000
name = None
#输入客户名字
name = input("请输入您的姓名")
# 查询函数
def check(show_header):
if show_header:
# 传入一个布尔值,若为false则不打印标头
print("---------查询余额----------")
print(f"{name},您好,您的余额是{money}元")
# 存款函数
def saving(num):
global money
money += num
print("--------- 取款-------- --")
print(f"{name},你好,你已存入{num}")
# 调用查询函数,且不要查询函数的标头
check(False)
# 取款函数
def get_money(num):
global money
money -= num
print("--------- 存款-------- --")
print(f"{name},你已取走{num}元")
# 调用查询函数,且不要查询函数的标头
check(False)
# 主菜单函数
def main():
print("---主菜单---")
print(f"{name},你好")
print("查询余额请按\t\t【1】")
print("存款请按\t\t【2】")
print("取款请按\t\t【3】")
print("退出请按\t\t【4】")
# 要返回输入值,有return
return input("请输入您的选择:")
# 设置无限循环,确保程序不退出
while True:
keyboard_input = main()
# 比较运算符==
if keyboard_input == "1" :
check(True)
continue #通过continue进入下一次循环进入主菜单
elif keyboard_input == "2" :
# 不要忘了转换变量类型
num = int(input("请输入数字"))
saving(num)
continue
elif keyboard_input == "3" :
num = int(input("请输入数字"))
get_money(num)
continue
else :
print("退出程序")
break