一、函数的基本定义
函数:是组织好的、可重复使用的、用来实现特定功能的代码段。
定义:
def 函数名 (传入参数) :
函数体
return 返回值
注意:1. 传入参数没有可不写,但括号要写。
2. 没有返回值可以不写return语句。
3. 先定义后调用。
二、函数的参数
传入的参数数量不限制,参数之间用‘ , ’隔开
举例:
#2数相加函数
def add(x,y):
z = x + y
print(f"{x}+{y} = {z}")
add(1,5)
运行结果:
1+5 = 6
三、函数返回值
函数里进行运算的结果可以通过return 传递出去,用变量接收。
举例:
#2数相加函数
def add(x,y):
z = x + y
return z
z = add(1,5)
print(z)
运行结果:6
注意:
1. return语句执行后就退出函数了,return后面的语句不会被执行。
2. 若没有返回值,没有return语句等同于返回了“None”,None为特殊的字面量,表示“空”的意思,没有实际意义。
关于None类型的应用场景
1. 用在函数无返回值上。
2. 用在if判断上:
在if判断中,None等同于False,一般用于在函数中主动返回None,配合if判断做相关处理。
3. 定义暂时不需要有值的变量:
name = None
四、函数的说明文档
使用后,在调用函数时,鼠标悬停可以看到函数说明。
格式:
def func(x,y):
'''
函数说明
:param x:形参x说明
:param y:形参x说明
:return:返回值的说明
'''
函数体
return 返回值
举例:
def add(x,y):
'''
add函数可以接收两个参数,进行两个数相加的功能
:param x:
:param y:
:return:
'''
z = x + y
return z
五、函数的嵌套
指在一个函数里调用了另一个函数。
六、变量的作用域
局部变量
定义在函数体内部的变量,作用范围只在函数体内部生效。若在函数外使用该变量会报错。
全局变量
定义在函数外(在函数定义前),指在函数体内外都能生效的变量。
举例:
num = 100
def func1():
print(num)
def func2():
print(num)
func1()
func2()
global关键字
用来在函数内部修改全局变量。
1. 举例:不适用global修改
num = 100 # 全局变量
def func1():
print(num)
def func2():
num = 200 # 局部变量,与全局变量num没有任何关系,指向两个不同的地址
print(num) # 有局部变量时先找局部变量使用
func1()
func2()
print(num)
运行结果:
100 200 100
发现函数内修改语句,只是重新定义了一个局部变量num,与全局变量num没有任何关系。
2. 举例:使用global修改
num = 100
def func1():
print(num)
def func2():
global num
num = 200
print(num)
func1()
func2()
print(num)
运行结果:
100 200 200
综合案例:查询余额,存、取钱
money = 5000000 #初始余额
name = None
serve = None
# 菜单函数
def menu():
global serve
print("请输入所需服务号")
print("1:余额查询;2:存款;3:取款;4:退出")
serve = int(input())
# 查询余额
def find_money():
print(f"当前余额为{money}")
# 存钱
def deposit():
global money
print("您要存的金额为:")
deposit_money = int(input())
money = money + deposit_money
print(f"存款成功,当前余额:{money}")
#取钱
def withdraw():
global money
print("您要取的金额为:")
withdraw_money = int(input())
if withdraw_money > money:
print("取钱失败,余额不足")
else:
money = money - withdraw_money
print(f"取钱成果,当前余额:{money}")
# 主函数
print("请输入姓名")
name = input()
while 1:
if name == "米米":
menu()
if serve == 1:
find_money()
elif serve == 2:
deposit()
elif serve == 3:
withdraw()
elif serve == 4:
break
else:
print("输入错误1,退出")
break
else:
print("输入错误2,退出")
break
运行结果: