第5.3节 详说Python风格的函数分配参数

本文介绍了Python中分配参数的定义,它与参数收集过程相反,是在调用函数传递实参时用星号传递多个参数。还阐述了使用1个和2个星号的分配参数的使用方法及示例,指出一个星号可给收集参数传值,两个星号不能给收集参数传值,且分配与收集参数模式并存意义不大。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、 分配参数的定义
参数收集就是在定义函数时不能确认参数个数,用收集参数将调用时不确定数量的实参存放到收集参数的元组中。分配参数与此过程相反,它不是在定义函数形参时使用星号(1个或2个),而是在调用函数传递实参时使用星号(1个或2个)来传递多个参数。

二、 分配参数的使用

  1. 使用1个星号的分配参数
    使用1个星号的实参时,实参为一个元组、列表、字典或集合,该实参内的元素将按参数顺序传递给函数,但由于字典实际传值取的是键,集合的元素没有顺序,因此不建议使用字典和集合传值。
    举例:

def cal(calmethod,number1,number2,*numbers):
print(‘number1=’,number1,’,number2=’,number2,’,numbers=’,numbers,’, calmethod=’,calmethod)

paras=(’+’,1,2,3,4) #元组分配参数传值
cal(*pars)
number1= 1 ,number2= 2 ,numbers= (3, 4) , calmethod= +

paras=[’+’,1,2,3,4]
cal(*paras) #列表分配参数传值
number1= 1 ,number2= 2 ,numbers= (3, 4) , calmethod= +

paras={’+’,1,2,3,4}
cal(*paras) #集合分配参数传值,顺序变化了
number1= 2 ,number2= 3 ,numbers= (4, ‘+’) , calmethod= 1

paras={’+’:10,1:20,2:30,3:40,4:50}
cal(*paras) #字典分配参数传值,取的是键作为参数
number1= 1 ,number2= 2 ,numbers= (3, 4) , calmethod= +

从上面的例子可以看出,一个星号的收集参数可以通过1个星号的分配参数方式传值。
老猿认为,分配参数实际上就是将实参传递的序列数据解包给对应形参的过程。

  1. 使用2个星号的分配参数
    使用2个星号的实参时,实参为一个字典,该字典内的元素将按关键字参数模式传递给函数,其中的键为关键字参数,值为关键字参数对应的实参值。使用这种模式要求该实参位于参数列表末尾。还是以上面函数为例:
    >>> paras={‘calmethod’:’+’,‘number1’:1,‘number2’:2,‘numbers’:[3,4,5]}
    >>> cal(**paras) #报错遇到没有预期的关键字参数’numbers’
    >>> paras={‘calmethod’:’+’,‘number1’:1,‘number2’:2,‘numbers’:(3,4,5)}
    >>> cal(**paras) #报错遇到没有预期的关键字参数’numbers’
    >>> paras={‘calmethod’:’+’,‘number1’:1,‘number2’:2,’*numbers’:(3,4,5)}
    >>> cal(**paras) #报错遇到没有预期的关键字参数’*numbers’
    >>> paras={‘calmethod’:’+’,‘number1’:1,‘number2’:2}
    >>> cal(**paras)
    number1= 1 ,number2= 2 ,numbers= () , calmethod= +
    www.ximalaya.com/youshengshu/24988694/
    www.ximalaya.com/youshengshu/24988902/
    www.ximalaya.com/youshengshu/24988895/
    www.ximalaya.com/youshengshu/24988876/
    www.ximalaya.com/youshengshu/24988853/
    www.ximalaya.com/youshengshu/24988860/
    www.ximalaya.com/youshengshu/24989006/
    www.ximalaya.com/youshengshu/24988989/
    www.ximalaya.com/youshengshu/24989002/
    www.ximalaya.com/youshengshu/24988961/
    www.ximalaya.com/youshengshu/24989090/
    www.ximalaya.com/youshengshu/24989083/
    www.ximalaya.com/youshengshu/24989073/
    www.ximalaya.com/youshengshu/24989066/
    www.ximalaya.com/youshengshu/24989061/
    www.ximalaya.com/youshengshu/24989166/
    www.ximalaya.com/youshengshu/24989154/
    www.ximalaya.com/youshengshu/24989141/
    www.ximalaya.com/youshengshu/24989133/
    www.ximalaya.com/youshengshu/24989131/
    www.ximalaya.com/youshengshu/24989255/

从上面的案例可以看出来:

  1. 两个星号的参数分配不能给两个星号的收集参数传值,因为这没有意义,还不如直接使用形参为字典类型实参是字典数据进行操作。
  2. 分配参数模式和收集参数模式可以并存,如上面的例子,但这种使用方式意义不大,一般不建议使用。
 本节对Python函数的分配参数的内容结合例子进行了详细介绍,相关内容稍微有点复杂,希望老猿介绍的内容能有助于大家理解函数的分配参数使用方法。截止本节为止,函数的参数使用方法基本介绍完了,大家好好理解掌握一下。
 老猿Python(https://blog.youkuaiyun.com/LaoYuanPython)系列文章用于逐步介绍老猿学习Python后总结的学习经验,这些经验有助于没有接触过Python的程序员可以很容易地进入Python的世界。

作者:LaoYuanPython
来源:优快云
原文:https://blog.youkuaiyun.com/LaoYuanPython/article/details/90670154
版权声明:本文为博主原创文章,转载请附上博文链接!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值