函数基础
一、函数的作用
- 简单案例:ATM项目存款、取款、查询余额
# 存款的代码
print('---存款--')
# 跳转到主页
print(' 欢迎使用WoniuATM '.center(48, '*'))
print(' 1.存款 2.取款 3.查询 4.退卡 '.center(46, '*'))
pirnt('*' * 50)
# 取款的代码
print('---取款---')
# 跳转到主页
print(' 欢迎使用WoniuATM '.center(48, '*'))
print(' 1.存款 2.取款 3.查询 4.退卡 '.center(46, '*'))
pirnt('*' * 50)
# 查询的代码
print('---取款---')
# 跳转到主页
print(' 欢迎使用WoniuATM '.center(48, '*'))
print(' 1.存款 2.取款 3.查询 4.退卡 '.center(46, '*'))
pirnt('*' * 50)
- 函数的复用性:当程序中有重复代码时,可以考虑将这些代码使用函数进行封装。当需要使用这些代码,只要调用封装好的函数即可。这个就是函数的复用性
二、函数的使用步骤
2.1 使用函数解决ATM代码重复的问题
# 定义一个主页函数
def func():
print(' 欢迎使用WoniuATM '.center(48, '*'))
print(' 1.存款 2.取款 3.查询 4.退卡 '.center(46, '*'))
print('*' * 50)
# 存款的代码
print('---存款--')
# 跳转到主页
func() # 函数的调用
# 取款的代码
print('---取款---')
# 跳转到主页
func() # 函数的调用
# 查询的代码
print('---查询---')
# 跳转到主页
func() # 函数的调用
2.2 函数的定义
- 语法
def 函数名(参数1, ..,参数n):
函数体
return 数据对象(或变量,或表达式)
函数名:必须满足标识符的命名规则,建议使用小写字母,单词之间使用下划线分隔;
形式参数:根据需求不同,可以有多个,也可以没有;
函数体:可以使用三种程序结构,也可以调用另一个函数;
返回值:可以不写,默认返回None。
- 简单的代码
def func():
pass
2.3 函数的调用
函数必须先定义,再调用!
# 定义函数
def func(a):
print(a)
# 调用函数
func(11) # 11
函数的调用相当于将函数的代码执行一遍,并将结果返回给调用者。
三、参数的作用
函数定义中的参数,相当于函数空间内的变量
- 案例:使用函数计算2+3的结果
# 定义一个2+3的函数
def sum_():
print(2 + 3)
# 调用函数计算2+3
sun_() # 5
- 加需求:使用函数计算任意两个整数的和
# 定义函数
def sum_(a, b):
print(a + b)
# 调用函数
sum_(2, 3) # 5
参数的定义:
- 将事物相同的特性写入到函数体中;
- 将不同的特性定义到函数的参数中。
四、返回值的作用
一个函数必须要有一个返回值,如果没有return
则返回None
。
调用者只不需要关心函数体,…只需要关注函数的功能、函数的入参、函数的返回值。
- 案例:一个人到商店买水杯,顾客需要关注水杯的功能、价格、店主是否给想要的水杯。
# 定义一个买水杯的函数
def func(money):
""" 函数的功能:卖水杯 """
print('制造水杯')
print('运输水杯')
return f'一个{money}块钱的水杯'
# 调用函数
func(20)
# 打印返回值
print(func(20)) # 一个20块钱的水杯
函数的调用者只需要关注函数的功能、入参、返回值。
函数体的代码不需要关注。
五、函数的说明文档
说明文档,也叫文档说明,在函数定义定义语句的下方。
必须使用三对引号包裹,代码执行时会跳过说明文档,相当于注释。
- 基本使用
# 定义一个求和函数
def sum_(a, b):
""" 这个函数是一个两数求和函数 """
print(a + b)
# 获取函数的说明文档
help(sum_)
''' 输出结果:
Help on function sum_ in module __main__:
sum_(a, b)
这个函数是一个两数求和函数
'''
- 高级使用
# 定义一个求和函数
def sum_(a, b):
"""
这是一个两数求和函数
:param a: 求和函数的第一个参数,必须传入整数
:param b: 求和函数的第二个参数,必须传入整数
:return: 返回两数之和
"""
return a + b
# 查看函数的说明文档
help(sum_)
''' 输出结果:
Help on function sum_ in module __main__:
sum_(a, b)
这是一个两数求和函数
:param a: 求和函数的第一个参数,必须传入整数
:param b: 求和函数的第二个参数,必须传入整数
:return: 返回两数之和
'''
六、函数的嵌套调用
函数的嵌套,指的是在一个函数中调用另外一个函数。
# 定义函数A
def func_a():
print('---在A中调用B之前---')
func_b()
print('---在A中调用B之后---')
# 定义函数B
def func_b():
print('---在B中第一行语句---')
print('---func_b的函数体---')
print('---在B中最后一行语句---')
# 调用函数A
func_a()
以上代码中,函数的定义顺序无所谓,只要函数的定义在调用函数之后 即可。
七、案例
- 使用函数的嵌套打印多条横线,横线的条线可按
# 定义函数打印一条横线
def func1():
print('-' * 50)
# 定义函数,打印多条横线,横线条线可控
def func2
- 求三个数的平均值,必须使用两个函数进行嵌套
def sum_(a, b, c):
return a + b + c
def avg_(a, b, c): # 此函数需要调用sum_函数
# 三个数求和
x = sum_(a, b, c)
# 将和除以3
return x / 3
y = avg_(1, 2, 3) # 平均值
print(y) # 打印返回值