函数基础回顾
知识点
通用定义格式
def 函数名(形式参数):
函数体
return 返回值
通用调用格式
变量接受返回值=函数名(实际参数)
注意事项:
1.函数必须先定义再调用
2.每定义一次调就执行一次
3.不调用不执行
4.如果有形参,调用时必须传入实参
5.如果有返回值,调用时建议用变量接受返回值
6.没有返回值,默认返回的是None(空的,没有意义的)
函数的多个返回值
知识点
return 返回值:return结束并退出当前函数,顺带把后面的返回值给调用者
return 值1,值2...:return后跟多个返回值,默认是放到元组中返回此元组
示例
# 函数返回多个值,核心思想放到容器中返回,默认用的元组 # 先定义函数 def show(): return 1, 2, 3 # 直接拆包接收 a, b, c = show() print(a, b, c, ) # 先定义函数 def show(): return 1, 2, 3, 5, 6, 7, 8, 9 # 调用函数 # 接收元组 result = show() print(result, type(result)) # 遍历元组 for i in result: print(i)
函数参数分类
形参:定义函数的时候,括号中内容
位置参数,缺省参数,可变参数
实参:调用函数的时候,括号中内容
位置参数传参,关键字参数传参
特点:
位置参数:顺序必须一致
关键字参数:顺序可以不一致
缺省参数:个数可以不一致
可变参数:传入的实参个数可以不定长,*args以元组形式接受数据,**argskws以字典方式接受数据
位置参数示例
# 先定义函数 def show(name, age, height): print(f'姓名{name},年龄:{age},身高:{height}cm') # 姓名张三,年龄:18,身高:178.8cm # 再调用函数 # 演示位置传参,弊端:实参和形参的个数和顺序都必须一致 show('张三', 18, 178.8)
关键字参数示例
# 定义函数 def show(name, age, height): print(f'您的名字是:{name},您的年龄是:{age},您的身高是:{height}') # 您的名字是:张三,您的年龄是:18,您的身高是:178.8 # 再调用函数 # 演示关键字传参 优点:实参和形参顺序可以不一致 弊端:实参和形参个数必须一致 show('张三', 18, 178.8) # 位置传参 show(height=178.8, name='张三', age=18) # 关键字传参 # 如果位置参数和关键字参数一起使用,关键字参数需要放到后面 show('张三', height=178.8, age=18)
缺省参数示例
# 先定义函数 # 注意位置参数和缺省参数一起配合使用,缺省参数需要放到后面 def show(name='张三', age=18, height=178.8): print(f'您的名字是:{name},您的年龄是:{age},您的身高是:{height}') # 在调用函数,优点:实参和形参的个数可以不一致 # 如果设置了缺省参数,调用时可以都不传,使用默认值 show() # 如果设置了缺省参数,调用时传入了值,以传入的为主 show('李四') show('李四', 19) show('李四', 19, 188.8) # 注意:如果定义的时候都设置了缺省参数,调用的时候只想改变后面某个数据,需要用关键字参数 show(name='王五', height=188.8) show('李四', height=188.8) show(age=20, height=188.8)
不定长参数示例
""" 可变参数:不定长参数 位置传参:一个个数据,使用*args接收,默认把所有数据存储到了元组中,这个元组名叫args 关键字传参:一对对数据,使用**kwargs,默认把所有数据存储到了字典中,这个字典名叫kwargs """ # 定义函数 def show1(*args, **kwargs): print(args, type(args)) # (1, 2, 3, 4, 5) <class 'tuple'> print(kwargs, type(kwargs)) # {'a': 10, 'b': 20, '数学': 90} <class 'dict'> # 再调用函数 show1(1, 2, 3, 4, 5, a=10, b=20, 数学=90)
综合案例
# 定义一个求和的函数 # 先定义函数 def get_sum(*args, **kwargs): sum = 0 # 遍历元组 for i in args: sum += i # 遍历字典所有值 for i in kwargs.values(): sum += i return sum # 再调用函数 sum = get_sum(3, 10, 20, 30, a=1, b=10, c=30, ) print(sum)