函数
函数:是组织好的,可重复使用的,用来实现特定功能的代码段
为了得到一个针对特定需求、可供重复使用的代码段,提高程序的复用性,减少重复性的代码,提高开发效率
# 例
name = "I love python"
length = len(name)
print(length)
13
# 不使用len函数,统计字符串长度
name1 = "I love python"
count = 0
for i in name1:
count += 1
print(count)
name2 = "Ilovepython"
count = 0
for i in name2:
count += 1
print(count)
# 函数
def my_len(data):
count = 0
for i in data:
count += 1
print(f"{data}的长度是 {count}")
my_len(name1)
my_len(name2)
13
11
I love python的长度是 13
Ilovepython的长度是 11
函数的定义
def 函数名(传入参数):
函数体(函数要做的事情)
return 返回值
函数的调用:函数名(参数)
注意:
- 参数如不需要,可以省略
- 返回值如果不需要,可以省略
- 函数必须先定义后使用
def say_hi():
print("hi python")
say_hi()
hi python
函数的参数
函数定义中提供的多个参数,称之为:形式参数(形参),表示函数声明将要使用2个参数
- 参数之间使用逗号进行分隔
函数调用中,提供的实际传入参数,称之为:实际参数(实参),表示函数执行时真正使用的参数值
- 传入的时候,按照顺序传入数据,使用逗号分隔
传入参数的数量是不受限制的
- 可以不使用参数
- 也可以使用任意N个参数
# 传入参数
def add(x,y):
result = x + y
print(f"{x} + {y}的结果是:{result}")
add(1,2)
1 + 2的结果是:3
# 案例 查体温
def check(num):
print("请配合检查体温!")
if num <= 37.5:
print(f"你的体温{num}度,正常!")
else:
print(f"你的体温{num}度,不正常!")
check(38)
check(37.2)
请配合检查体温!
你的体温38度,不正常!
请配合检查体温!
你的体温37.2度,正常!
函数的返回值
- 所谓“返回值”,就是程序中函数完成事情后,最后给调用者的结果
- 函数体里遇到return后就结束了,所以写在return后的代码不会执行
- 无返回值的函数,实际上是返回了: None 这个字面量
None 作为一个特殊的字面量,用于表示:空、无意义,其有非常多的应用场景
- 用在函数无返回值上
- 用在if判断上,None等于False
- 用于声明无内容的变量上
def add(x,y):
result = x + y
return result
add(1,2)
3
def add(x,y):
result = x + y
#return result
#return None # 也可以主动返回None
print(add(1,2))
None
def check_age(age):
if age > 18:
return "SUCCESS"
else:
return None
print(check_age(16))
print(check_age(19))
result = check_age(16)
if not result:
print("未成年")
None
SUCCESS
未成年
函数的说明文档
函数是纯代码语言,想要理解其含义,就需要一行行的去阅读理解代码,效率比较差,可以给函数添加说明文档,辅助理解次函数的作用
语法如下:
def func(x, y)
"""
函数说明
:param x: 形参x的说明
:param y: 形参y的说明
:return : 返回值的说明
"""
函数体
return 返回值
通过多行注释的形式,对函数进行说明解释
- 注释内容写在函数体之前
def add (x, y):
"""
add函数可以接收2个参数,进行2数相加的功能
:return: 返回值是2数相加的结果
"""
result = x + y
print(f"两数相加结果是:{result}")
return result
r = add(3, 5)
print(r)
两数相加结果是:8
8
函数的嵌套
函数的嵌套调用指的是一个函数里面又调用了另外一个函数
def func_b():
print("---2---")
def func_a():
print("---1---")
func_b()
print("---3---")
func_a()
---1---
---2---
---3---
函数中变量的作用域
局部变量:定义在函数体内部的变量,即只在函数体内部生效
全局变量:在函数体内、函数体外都能使用的变量,变量定义在函数体外部
global关键字
- global 变量名 可以在函数内部声明变量为全局变量
def testa():
num = 1
print(num)
testa()
#print(num)
1
num = 1
def testb():
num = 20 # 局部变量
print(num)
testb()
print(num)
20
1
num = 1
def testb():
global num # 设置内部定义的变量为全局变量
num = 20
print(num)
testb()
print(num)
20
20
函数综合案例
money = 50000
name = None
name = input("请输入你的名字:")
def check_money(show_header):
if show_header:
print(f"-----------查询余额-------------")
print(f"{name},您好,您的余额剩余:{money}元")
def saving(money_num):
global money
money += money_num
print("-------------存款---------------")
print(f"{name},您好,您存款{money_num}元成功。")
check_money(False)
def get_money(money_num):
global money
money -= money_num
print("-------------取款---------------")
print(f"{name},您好,您取款{money_num}元成功。")
check_money(False)
def main():
print("------------主菜单--------------")
print(f"{name},您好,很高兴为你服务,请选择操作:")
print("查询余额\t[输入1]")
print("存款\t[输入2]")
print("取款\t[输入3]")
print("退出\t[输入4]")
return input("请输入您的选择:")
while True:
keyboard_input = main()
if keyboard_input == "1":
check_money(True)
continue
elif keyboard_input == "2":
money_num = int(input("您想存多少钱?请输入:"))
saving(money_num)
continue
elif keyboard_input == "3":
money_num = int(input("您想取多少钱?请输入:"))
get_money(money_num)
continue
else:
print("操作结束")
break
------------主菜单--------------
tang,您好,很高兴为你服务,请选择操作:
查询余额 [输入1]
存款 [输入2]
取款 [输入3]
退出 [输入4]
-----------查询余额-------------
tang,您好,您的余额剩余:50000元
------------主菜单--------------
tang,您好,很高兴为你服务,请选择操作:
查询余额 [输入1]
存款 [输入2]
取款 [输入3]
退出 [输入4]
-------------存款---------------
tang,您好,您存款50000元成功。
tang,您好,您的余额剩余:100000元
------------主菜单--------------
tang,您好,很高兴为你服务,请选择操作:
查询余额 [输入1]
存款 [输入2]
取款 [输入3]
退出 [输入4]
-------------取款---------------
tang,您好,您取款20000元成功。
tang,您好,您的余额剩余:80000元
------------主菜单--------------
tang,您好,很高兴为你服务,请选择操作:
查询余额 [输入1]
存款 [输入2]
取款 [输入3]
退出 [输入4]
操作结束