Python学习——函数、参数、参数解构

可变参数
有多个数,需要累加求和
def add(nums):
sum = 0
for x in nums:
sum += x
return sum
add([1,3,5])、add((2,4,6))
传入一个可迭代对象,迭代元素求和,可变参数 ,一个形参可以匹配任意个参数

位置参数的可变参数
有多个数,需要累加求和
在这里插入图片描述

在形参前使用*表示该形参是可变参数,可以接收多个实参
收集多个实参为一个tuple

关键字参数的可变参数
配置信息打印
在这里插入图片描述
形参前使用**符号,表示可以接收多个关键字参数
收集的实参名称和值组成一个字典

总结
有位置可变参数和关键字可变参数
位置可变参数在形参前使用一个星号*
关键字可变参数在形参前使用两个星号**
位置可变参数和关键字可变参数都可以收集若干个实参,位置可变参数收集形成一个tuple,关键字可变参数收集形成一个dict
混合使用参数的时候,可变参数要放到参数列表的最后,普通参数需要放到参数列表前面,位置可变参数需要在关键字可变参数之前
在这里插入图片描述
keyword-only参数(Python3加入)
如果在一个星号参数后,或者一个位置可变参数后,出现的普通参数,实际上已经不是普通的 参数了,而是keyword-only参数
在这里插入图片描述
args可以看做已经截获了所有的位置参数,x不使用关键字参数就不可能拿到实参

def fn(**kwargs, x) ,直接报语法错误 可以理解为kwargs会截获所有的关键字参数,就算你写了x=5,x也永远得不到这个值,所以语法错误

keyword-only 参数另一种形式
def fn(*, x,y):
print(x,y)
fn(x=5,y=6)
*号之后,普通形参都变成了必须给出的keyword-only 参数
在这里插入图片描述

参数规则
参数列表参数一般顺序是,普通参数、缺省参数、可变位置参数、keyword-only参数(可带缺 省值)、可变关键字参数
代码应该易读易懂,而不是为难别人 .请按照书写习惯定义函数参数

参数解构
在这里插入图片描述
在这里插入图片描述

给函数提供实参的时候,可以在集合类型前使用或者**,把集合类型的结构解开,提取出所有 元素作为函数的实参
非字典类型使用
解构成位置参数
字典类型使用**解构成关键字参数
提取出来的元素数目要和参数的要求匹配,也要和参数的类型匹配

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章