最新公告
  • 欢迎您光临起源地模板网,本站秉承服务宗旨 履行“站长”责任,销售只是起点 服务永无止境!立即加入钻石VIP
  • 详解Python函数中参数带星号是什么意思

    正文概述    2020-10-14   234

    详解Python函数中参数带星号是什么意思

    函数的参数使用除了常规的位置参数和关键字参数外,还支持可变个数的函数参数,这种支持可变个数的参数方法称为参数收集,对应的参数称为收集参数。

    一、参数收集的定义

    Python的函数支持可变不定数量的参数模式,这种将不定数量实参在调用时传递给函数,函数将其识别并保存到指定形参的过程称为参数收集:

    1、带一个星号的参数收集模式

    这种模式是在函数定义时在某个形参前面加一个星号,调用时按位置匹配不带星号的形参和实参,多余的实参都将作为一个元组的元素保存到星号对应的形参中,该星号后的形参就称为收集参数。

    这种模式的参数收集过程与前面介绍的序列解包类似,只是序列解包是将序列中多出的部分存放到星号后面的列表变量,而函数收集是将多出的参数存放到收集参数对应的元组变量。这种模式的参数收集与序列解包类似,收集参数最好是最后一个形参,但可以出现在函数参数的任何位置,只是此时该参数后面的参数在调用时必须用关键字参数模式传值,否则这些实参值都将作为收集参数的一部分。

    举例:我们来实现一个计算函数,其终极目标是输入一串不限数量的数字,然后调用对应的运算符进行连续运算(如连加、连减、连乘等)。为了突出重点,我们在最初的例子只是定义这个函数并输出参数值,以来验证上面相关描述对于形参和实参的取值方法。后面章节再来完整实现该函数。

    函数定义:

    \>>> def cal(number1,number2=None,*numbers,calmethod='$'):
    
        print('number1=',number1,',number2=',number2,',numbers=',numbers,', calmethod=',calmethod)

    函数调用执行:

    \>>> cal(1,'+')
    
    number1= 1 ,number2= + ,numbers= () , calmethod= $
    
    \>>> cal(1,2,'+')
    
    number1= 1 ,number2= 2 ,numbers= ('+',) , calmethod= $
    
    \>>> cal(1,2,3,'+')
    
    number1= 1 ,number2= 2 ,numbers= (3, '+') , calmethod= $
    
    \>>> cal(1,2,3,4,'+')
    
    number1= 1 ,number2= 2 ,numbers= (3, 4, '+') , calmethod= $
    
    \>>> cal(1,calmethod='+')
    
    number1= 1 ,number2= None ,numbers= () , calmethod= +
    
    \>>> cal(1,2,calmethod='+')
    
    number1= 1 ,number2= 2 ,numbers= () , calmethod= +
    
    \>>> cal(1,2,3,calmethod='+')
    
    number1= 1 ,number2= 2 ,numbers= (3,) , calmethod= +
    
    \>>> cal(1,2,3,4,calmethod='+')
    
    number1= 1 ,number2= 2 ,numbers= (3, 4) , calmethod= +
    
    \>>>

    执行截图如下:

    详解Python函数中参数带星号是什么意思

    2、带两个星号的参数收集模式

    第一种模式的收集参数不能收集关键字参数传递的实参,要收集关键字参数传递的实参,需要在收集参数前使用两个星号,此时收集参数对应的是一个字典而不是元组。

    此种模式的收集参数必须放在函数的最后一个,这是因为关键字参数的函数参数之后不允许出现非关键字参数。此种情况的关键字参数的参数名,并不是上节内容介绍的函数定义中的关键字参数名,而是在实参调用时采用关键字参数形式传递的不定数量的参数。 两种模式的收集参数可以混用。

    \>>> def cal(calmethod='+',*topnopers,**lastnopers):
    
    print('运算符=',calmethod,',前几个运算参数为=',topnopers,',最后几个运算参数=',lastnopers)
    
    \>>> cal('+',1,2,3,4,n5=5,n6=6,n7=7)

    运算符= + ,前几个运算参数为= (1, 2, 3, 4) ,最后几个运算参数= {'n5': 5, 'n6': 6, 'n7': 7}


    起源地下载网 » 详解Python函数中参数带星号是什么意思

    常见问题FAQ

    免费下载或者VIP会员专享资源能否直接商用?
    本站所有资源版权均属于原作者所有,这里所提供资源均只能用于参考学习用,请勿直接商用。若由于商用引起版权纠纷,一切责任均由使用者承担。更多说明请参考 VIP介绍。
    提示下载完但解压或打开不了?
    最常见的情况是下载不完整: 可对比下载完压缩包的与网盘上的容量,若小于网盘提示的容量则是这个原因。这是浏览器下载的bug,建议用百度网盘软件或迅雷下载。若排除这种情况,可在对应资源底部留言,或 联络我们.。
    找不到素材资源介绍文章里的示例图片?
    对于PPT,KEY,Mockups,APP,网页模版等类型的素材,文章内用于介绍的图片通常并不包含在对应可供下载素材包内。这些相关商业图片需另外购买,且本站不负责(也没有办法)找到出处。 同样地一些字体文件也是这种情况,但部分素材会在素材包内有一份字体下载链接清单。
    模板不会安装或需要功能定制以及二次开发?
    请QQ联系我们

    发表评论

    还没有评论,快来抢沙发吧!

    如需帝国cms功能定制以及二次开发请联系我们

    联系作者

    请选择支付方式

    ×
    迅虎支付宝
    迅虎微信
    支付宝当面付
    余额支付
    ×
    微信扫码支付 0 元