--此系列主要记录一些本人作为一个小白在python学习上遇到的一些重要知识点和易错点的总结,开坑,希望能够坚持到学有所成。
day08:函数
一·定义格式以及特点
核心内容:\
#定义
def 函数名(形参):
函数体
return 返回值
#调用
变量接收返回值 = 函数名(实参)
函数注意事项:
1.函数必须先定义,再调用
2.函数不调用,不执行
3.函数的参数和返回值根据需求确定是否含有
4.定义函数时的写好的参数叫形参(形式参数)
5.调用函数时的传入的参数叫实参(实际参数)
6.定义函数时,如果没有书写return 返回值,本质是默认是return None
7.定义函数时,如果手动写了return 返回值,调用的时候建议用变量接收
二·返回值
return关键字: 主职:结束当前正在执行的函数,return后的代码不会执行 兼职:把return后的返回值,返回给调用者
return 多个返回值: 默认把多个返回值放到元组中返回给调用者
示例:
# return主职:结束当前正在执行的函数 兼职:把return后的返回值,返回给调用者
# 先定义函数
def show1():
return 10
return 20 # 报黄警告:此行无法访问(不会执行到此行)
def show2():
return 10, 20
# 再调用函数
num = show1()
print(num, type(num)) # 10 <class 'int'>
# 注意: 如果return 值1,值2 ,默认把值1,值2放到元组中返回
num_tuple = show2()
print(num, type(num_tuple)) # (10, 20) <class 'tuple'>
# 元组拆包
x, y = num_tuple
print(x, y)
三·函数的参数以及传参方式
函数中常见四种参数:
1.位置参数
2.关键字参数
3.缺省参数
4.可变参数
位置参数
注意:
1.位置参数传参,形参和实参必须一一对应
2.顺序必须一致,否则数据混乱赋值
3.个数必须一致,否则报错
# 1.先定义函数
def show(name, age, height):
print(f'{name}的年龄是{age},身高是{height}cm')
# 2.再调用函数
show('张三', 18, 178.8)
show('李四', 28, 168.8)
show('李四', 168.8, 28)# 身高和年龄混乱赋值
show('李四', 168.8) # 报错
关键字参数
注意:
1.关键字参数传参,形参和实参个数必须一致
2.顺序可以不一致
3.个数必须一致,否则报错
# 1.先定义函数
def show(name, age, height):
print(f'{name}的年龄是{age},身高是{height}cm')
# 注意:函数调用时,如果有位置参数时,位置参数必须在关键字参数的前面,但关键字参数之间不存在先后顺序
show('李四', age=28, height=168.8)
缺省参数
注意:
1.缺省参数已经提前设置了默认值,如果调用的时候又传入了参数,以传入的为主
2.缺省参数由于已经提前设置了默认值,所以个数可以不一致,如果调用的时候又传入了参数,以传入的为主
def show(name, age=18, height=188.8):
print(f'{name}的年龄是{age},身高是{height}cm')
show(name='李四')
可变参数
1.*args:把传入的多个值,存放到args元组中
2.**kwargs :把传入的多个键值对,存放到kwargs字典中
def show1(*args):
print(args)
def show2(**kwargs):
print(kwargs)
# 2.再调用函数
show1(1, 2, 3, 4) # (1, 2, 3, 4)
show2(a=1, b=2, c=3, d=4) # {'a': 1, 'b': 2, 'c': 3,'d':4}
注意:如果是直接将列表字典作为实参传入,需要先拆包
示例:
# 需求:定义一个函数,完成任意个数/格式的数字求和功能
# 1.先定义函数
# *args:把传入的多个值,存放到args元组中
# **kwargs:把传入的多个键值对,存放到kwargs字典中
def get_sum(*args, **kwargs):
# print(args)
# print(kwargs)
# 循环外定义sum,初始0
sum = 0
# 遍历元组
for i in args:
# 循环内累加i求和
sum += i
# 遍历字典
for i in kwargs.values():
# 循环内累加i求和
sum += i
# 循环外使用最终结果
return sum
# 2.再调用函数
# 需求: 已知列表和字典,要求求列表所有值和字典中所有值的和
list1 = [1, 2, 3]
dict1 = {'a': 4, 'b': 5, 'c': 6}
# 方式1: 直接传入
he = get_sum(1, 2, 3, a=4, b=5, c=6)
print(he)
# 方式2: 使用*和**自动拆分
he = get_sum(*list1, **dict1)
print(he)