新网创想网站建设,新征程启航

为企业提供网站建设、域名注册、服务器等服务

Python风格的函数分配参数是什么

这篇文章给大家分享的是有关Python风格的函数分配参数是什么的内容。小编觉得挺实用的,因此分享给大家做个参考。一起跟随小编过来看看吧。

成都创新互联公司专业为企业提供王屋网站建设、王屋做网站、王屋网站设计、王屋网站制作等企业网站建设、网页设计与制作、王屋企业网站模板建站服务,10年王屋做网站经验,不只是建网站,更提供有价值的思路和整体网络服务。

一、分配参数的定义

参数收集就是在定义函数时不能确认参数个数,用收集参数将调用时不确定数量的实参存放到收集参数的元组中。分配参数与此过程相反,它不是在定义函数形参时使用星号(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= +

Python风格的函数分配参数是什么

从上面的例子可以看出,一个星号的收集参数可以通过1个星号的分配参数方式传值。

分配参数实际上就是将实参传递的序列数据解包给对应形参的过程。

2.使用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= +

Python风格的函数分配参数是什么

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

1)  两个星号的参数分配不能给两个星号的收集参数传值,因为这没有意义,还不如直接使用形参为字典类型实参是字典数据进行操作。2)  分配参数模式和收集参数模式可以并存,如上面的例子,但这种使用方式意义不大,一般不建议使用。

感谢各位的阅读!关于Python风格的函数分配参数是什么就分享到这里了,希望以上内容可以对大家有一定的帮助,让大家可以学到更多知识。如果觉得文章不错,可以把它分享出去让更多的人看到吧!


当前题目:Python风格的函数分配参数是什么
文章来源:http://wjwzjz.com/article/jsgpjp.html
在线咨询
服务热线
服务热线:028-86922220
TOP