今日所学内容:函数
函数:是完成 特定 功能的代码块,作为一个整体,对其进行特定的命名,该名字就代表函数
-- 现实中的意义:很多问题要借助一些工具进行处理 => 可以将工具提前生产出来并命名
=> 通过名字可以找到工具 => 使用工具来解决问题
优点:
1、避免代码的冗余
2、让程序代码结构更加清晰
3、让代码具有复用性,便于维护
一、函数的四部分
函数语法的定义:通过 def 关键字来定义
1、函数名:使用该函数的依据
2、函数体:完成特定功能的代码块
3、参数:完成功能需要的条件信息
4、返回值:功能完成后的反馈结果
— 函数的四部分都可以根据需求的变化而变化
二、函数的使用
使用函数时:必须先定义 后使用
1、根据需求定义函数
2、通过函数名找到函数所在的位置(内存地址)
3、函数名() 执行函数地址中存放的所有代码块
-- 函数在定义时需要外界的参数,就要在调用
4、函数执行完成后一定有返回结果,通过 return 关键字将结果返回给外界
-- 外界需要知道执行结果,用变量接收
— 外界不需要知道执行结果,只执行函数(不需要接收)即可
当设定好函数后,需要使用函数时,就调用一次,如果又有相同的需求,函数可以重复调用,编码过程中函数只有一个,代码结构清晰且不冗余。
三、函数的分类
1、根据函数体分类:
1)空函数:用 pass 来填充函数体的函数
-- 优先明确函数名,暂不明确函数体(编程中就存在一些没有函数体的函数)
Eg:def login(): pass 在开发初期,可以将所有功能提前列出来,用 pass 占位,后期再去填充功能体
2)非空函数:有函数体的函数
Eg:def fn2(): print('函数体')
2、根据函数参数分类
1)有参函数: Eg:def add_two(n1, n2):
print('功能体需要外界的参数')
print(n1 + n2)
2)无参函数: Eg:def add():
print('功能体不需要外界的参数')
n1 = input('n1: ')
n2 = input('n2: ')
print(n1 + n2)
3、根据函数返回值分类:所有的函数都有返回值
1)不明确返回值(无return) def low_two(n1, n2):
print(n1 - n2) # 外部不需要知道内部的执行结果
2)明确返回值(有 return)
def jump_two(n1, n2):
return n1 * n2 # 外部需要知道内部的执行结果
res = jump_two(10, 20)
print(res)
四、函数的返回值
1、函数名():
先拿到函数地址 => 再加载()内的执行函数体 =>最后得到函数的执行结果
返回值的功能: 1) 结束函数
2) 将函数的内部数据返回给外部
2、应用场景
1) 不明确 return 关键词的函数:
函数体中没有 return, 系统在函数最末尾自动添加了 return,返回的是None
2) 明确 空return 关键词的函数:为了结束函数而 return
return
def print_msg():
while True:
msg = input("msg: ")
if msg == 'q':
# break
return # 在特定的位置需要直接结束函数,但不需要告诉外界某个结果,用 空return 处理
print(msg)
print(msg) # 在break下可以被执行,在return下不能被执行
res = print_msg()
print(res)
3)有明确的返回值需求的函数:
-- python中的函数本质上只能返回一个值, -- 值跟在return关键词后 -- 可以通过语法上返回多个值,值之间用逗号隔开,但是本质上是返回装有多个值的元组
一个值
def get_num():
num = input('num: ')
return num
print(get_num())
多个值
def get_two_num():
n1 = input('n1: ')
n2 = input('n2: ')
return n1, n2
# return (n1, n2)
# print(get_two_num())
num1, num2 = get_two_num()
python中的return支持多值返回的语法原因是python中有解压赋值 ==> print(num1, num2)