系列文章目录
python入门(一)——你好python
python入门(二)——python基础语法
python入门(三)——python判断语句
python入门(四)——python循环语句
python入门(六)——python数据容器
python入门(七)——python函数进阶
python函数
1 函数介绍
函数:组织好、可重复使用、用来实现特定功能的代码段
好处
- 提高程序的复用性、减少重复性代码、提高开发效率
- 将功能封装在函数内,可随时随地重复利用
2 函数的定义
函数的定义
def 函数名(传入参数):
函数体
return 返回值
# 不可缺少括号
# 函数的调用:函数名(参数)
先执行调用函数,在执行函数里的代码
注意事项
- 参数不需要可以省略
- 返回值不需要可以省略
- 函数必须先定义再使用
def welcome():
print("欢迎来到比奇堡!")
print("请出示您的健康码以及48小时核酸阴性证明!")
welcome()
欢迎来到比奇堡!
请出示您的健康码以及48小时核酸阴性证明!
3 函数的参数
函数的传入参数
功能:在函数进行计算时,接受外部(调用时)提供的数据
def add():
result = 1 + 2
print(f"1 + 2的结果是:{result}")
def add(x, y):
result = x + y
print(f"{x} + {y}的结果是:{result}")
add(1, 2)
1 + 2的结果是:3
- 函数定义中提供x和y,称为形式参数(形参),表示函数声明将要使用2个参数,参数之间使用逗号进行分隔
- 函数调用中提供的1和2,称为实际参数(实参),表示函数执行时真正使用的参数值,传入的时候按照顺序传入数据,使用逗号分隔
传入参数的数量不受限制,可以不使用参数,也可以仅使用任意N个参数
temp = float(input("欢迎来到黑马程序员!请出示您的健康码以及72小时核算证明,并配合测量体温!"))
def check(num):
if num <= 37.5:
print(f"体温测量中,您的提问是:{num}度,体温正常请进!")
else:
print(f"体温测量中,您的提问是:{num}度,需要隔离!")
check(temp)
欢迎来到黑马程序员!请出示您的健康码以及72小时核算证明,并配合测量体温!37.5
体温测量中,您的提问是:37.5度,体温正常请进!
4 函数的返回值
返回值是程序中函数完成事情后,最后给调用者的结果
def 函数(参数...):
函数体
return 返回值
变量 = 函数(参数)#变量接受返回的函数值
def add(a, b):
result = a + b
return result
print("结束运行!")
# return后面的代码都不会被执行
r = add(5, 6)
print(r)
11
None类型
无返回值的函数,实际上是返回None字面量
def add(a, b):
result = a + b
r = add(5, 6)
print(r)
None
def add(a, b):
result = a + b
print(result)
r = add(5, 6)
print(r)
11
None
def add(a, b):
result = a + b
print(result)
return None
r = add(5, 6)
print(r)
type(r)
print(type(r))
11
None
<class 'NoneType'>
None应用场景
- 用在函数无返回值上
- 用在if判断上,在if判断中,None等同于False,一般用于在函数中主动返回None,配合if判断做相关处理
- 用于声明无内容变量,不需要变量有具体值可以用None代替
def check_age(age):
if age >= 18:
return "SUCCESS"
else:
return None
result = check_age(16)
if not result:
print("未成年,不可以进入")
未成年,不可以进入
5 函数说明文档
给函数添加说明文档,辅助理解函数作用
def func(x, y):
"""
函数说明
:param x:形参x的说明
:param y:形参y的说明
:return:return返回值的说明
"""
函数体
return 返回值
通过多行注释的形式,对函数进行说明解释,内容应写在函数体之前
鼠标悬停可以看到函数的说明文档
6 函数的嵌套调用
函数里面又调用了另外一个函数
def func_b():
print("---2---")
def func_a():
print("---1---")
func_b()
print("---3---")
# 调用函数func_a
func_a()
---1---
---2---
---3---
执行流程:
函数A中执行到调用函数B的语句,会将函数B全部执行完成后,继续执行函数A的剩余内容
7 变量的作用域
局部变量
定义在函数体内部的变量,只在函数体内部生效,临时保存数据,调用完成后立刻销毁局部变量
def test_a():
num = 100
print(num)
test_a()
print(num)
100
NameError: name 'num' is not defined
全局变量
在函数体内、外部都能生效的变量
num = 100
def test_a():
print(num)
test_a()
print(num)
100
100
全局变量vs局部变量
num = 100
def test_a():
print(num)
def test_b():
num = 500
print(num)
test_a()
test_b()
print(num)
100
500
100
global关键字
可以在函数内部声明变量为全局变量
num = 100
def test_a():
print(num)
def test_b():
global num
num = 500
print(num)
test_a()
test_b()
print(num)
100
500
500
8 综合案例
money = 5000000
name = input("请输入您的名字:")
def query(show_header):
if show_header:
print("---------------查询余额---------------")
print(f"{name},您好,您的余额剩余:{money}元")
def saving(num):
global money
money += num
print("---------------存款---------------")
print(f"{name},您好,您存款{num}元成功")
query(False)
def get_money(num):
global money
money -= num
print("---------------取款---------------")
print(f"{name},您好,您取款{num}元成功")
query(False)
def main():
print("---------------主菜单---------------")
print(f"{name},您好,欢迎来到比奇堡ATM,请选择操作:")
print("查询余额\t[输入1]")
print("存款\t\t[输入2]")
print("取款\t\t[输入3]")
print("退出\t\t[输入4]")
return input("请输入您的选择:")
while True:
key = main()
if key == "1":
query(True)
continue
elif key == "2":
saving(int(input("请输入您的存款金额:")))
continue
elif key == "3":
get_money(int(input("请输入您的取款金额:")))
continue
elif key == "4":
print("程序退出啦!")
break