Python学习——函数
目录
函数的定义
函数:实现特定功能的代码。
def 函数名 (传入参数):
函数体
return 返回值
调用方法:
函数名(参数)
注意:
- 函数要先定义才能使用。
- 参数不需要可以省略,但要有括号。
- 返回值不需要也可以省略
函数的参数
传入参数:在函数进行计算时,接受外部(调用时)提供的数据。传入参数的数量不受限制。
对如下代码进行分析:
- 函数定义中使用的x和y称为形式参数(形参),参数之间要用逗号隔开。
- 函数调用中使用的3和4称为实际参数(实参),传入数据时,按照顺序传入数据,使用逗号隔开。
练习:查体温
定义一个函数,接受参数传入,在函数内判断体温是否正常,超过37.5则为不正常。
产生一个35到40的随机浮点数代码:
import random
t = random.uniform(35, 40)
# 练习:自动查核酸
def check(x):
if x <= 37.5:
print("您的体温是:%.2f度,体温正常请进。" % x)
else:
print("您的体温是:%.2f度,不正常。" % x)
# 产生35到40的浮点数
import random
t = random.uniform(35, 40)
check(t)
函数的返回值
函数返回值的定义
返回值:程序中函数执行完事情后,给调用者的结果。这样的话,就可以将函数的返回值赋值给变量。
注意:函数体在遇到return后就结束执行,不会再执行return后面的代码。
None类型
函数即使没有return语句,依然有返回值。返回值是字面量:None,表示空的,无实际意义。不写return可以返回None,主动return None也可以。
应用场景:
- 用在函数无返回值。
- 用在if判断:在if判断中,None等同于False,一般用于函数中主动返回None,配合if判断做相应的处理。8
- 用于声明无内容的变量:定义暂时不需要具体值的变量,可以用None代替。例如:name = None。
def check_age(age):
if age >= 18:
return "success"
else:
return None
result = check_age(16)
if not result:
# 表明如果成功进入if则result为None,即相当于False
print("未成年,不能进入网吧")
函数说明文档
通过多行注释,对函数进行解释,辅助理解函数的作用。
语法定义举例:
def func (x, y):
"""
函数整体说明
:param x:形参x的说明
:param y:形参y的说明
:return:返回值的说明
"""
函数体
return 返回值
对函数进行注释说明之后,在之后使用给函数的时候,可以选中该函数,鼠标悬停就会弹出函数的说明文档,便于理解调用。
如下图所展示一般:
函数的嵌套调用
在一个函数里面再调用另外一个函数。
函数A中调用函数B,函数A执行到调用函数B的语句,会将函数B全部执行完之后,再继续执行函数A的剩余内容。
变量的作用域
函数体内部的变量为局部变量,只在函数体内部生效,临时保存数据。
将变量定义在函数的外边,即为全局变量,可以在函数内外使用。如果在函数体内部修改全局变量,只在函数体内部有影响(此时相当于局部变量),并不影响函数体外边该全局变量的值。而如果想要在函数体内部修改的全局变量的结果可以用于函数体外,则需要关键字global来声明。
global关键字
global关键字可以在函数内部声明变量为全局变量。
# 函数演示
num = 200
def test_b():
num = 100
print(f"text_a:{num}")
test_b()
print(num)
# 在函数体内修改变量为全局变量
num = 200
def test_a():
global num # 设置num为全局变量
num = 100
print(f"text_a:{num}")
test_a()
print(num)
函数综合案列:风筝ATM
功能描述
1.主菜单效果
- ----------主菜单---------
- “顾客名称”,您好,欢迎来到风筝银行ATM。请选择操作:
- 查询余额 【1】
- 存款 【2】
- 取款 【3】
- 退出 【4】
- 请输入您的选择:
2.查询余额效果
- -----------查询余额----------
- “顾客名称”,您好,您的余额剩余:5000000元。
3.存、取款效果
- ---------存款---------
- “顾客名称”,您好,您存款:50000元。
- “顾客名称”,您好,您的余额剩余:5050000元。
- ---------取款---------
- “顾客名称”,您好,您取款:50000元。
- “顾客名称”,您好,您的余额剩余:4950000元。
实现要求
1.定义全局变量money和name.
2.定义如下函数:
- 查询余额函数
- 存款函数
- 取款函数
- 主菜单函数
3.要求:
- 程序启动后输入客户姓名
- 查询余额、存款、取款后都会返回主菜单
- 存款、取款后,显示当前余额
- 客户选择退出或输入错误,程序会退出,否则一直运行
4.附加要求:
- 取款金额超出存款金额,提示失败
代码
代码版本1:老师写的代码:
money = 500000
name = input("请输入您的名字:")
# 主菜单函数定义
def main():
"""
主页面函数
:return: 返回操作值
"""
print("-------主菜单-------")
print(f"{name},您好,欢迎来到风筝银行ATM。请选择操作:")
print("查询余额\t【1】\n存款\t\t【2】\n取款\t\t【3】\n退出\t\t【4】")
num = int(input("请输入您的选择:"))
return num
def check(flag):
if flag == True:
print("-------查询余额-------")
print(f"{name},您好,您的余额剩余:{money}元")
def saving(num):
global money
money += num
print(f"{name},您好,您存款{num}元成功")
check(False)
def get_money(num):
global money
if num > money:
print("存款金额不足,操作失败。")
else:
money -= num
print(f"{name},您好,您取款{num}元成功")
check(False)
while True:
key_board = main()
if key_board == 1:
check(True)
continue
elif key_board == 2:
num = int(input("请输入您的存款金额:"))
saving(num)
continue
elif key_board == 3:
num = int(input("请输入您的取款金额:"))
get_money(num)
continue
else:
print("退出程序。")
break
代码版本1:自己写的代码:
- 函数名称不规范,偏中文。
- 函数体过于复杂,对与函数调用仍然不熟练。
money = 500000
name = input("请输入您的名字:")
def zhu():
print("-------主菜单-------")
print(f"{name},您好,欢迎来到风筝银行ATM。请选择操作:")
print("查询余额\t【1】\n存款\t\t【2】\n取款\t\t【3】\n退出\t\t【4】")
num = int(input("请输入您的选择:"))
if num == 1:
cha()
elif num == 2:
cun()
elif num == 3:
qu()
else:
return None
def cha():
print("-------查询余额-------")
print(f"{name},您好,您的余额剩余:{money}元")
if int(input("输入数字1返回主菜单:")) == 1:
zhu()
def qu():
print("-------取款-------")
money_qu = int(input(f"{name},您好,您取款:"))
global money
money -= money_qu
print(f"{name},您好,您的余额剩余:{money}元")
if int(input("输入数字1返回主菜单:")) == 1:
zhu()
def cun():
print("-------存款-------")
money_cun = int(input(f"{name},您好,您存款:"))
global money
money += money_cun
print(f"{name},您好,您的余额剩余:{money}元")
if int(input("输入数字1返回主菜单:")) == 1:
zhu()
while True:
if zhu() == None:
print("程序退出。")
break
zhu()