当前位置: 首页 > 图灵资讯 > 行业资讯> 详解Python函数中参数带星号是什么意思

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

发布时间:2025-09-30 17:26:59

除了传统的位置参数和关键字参数外,函数参数还支持可变个数的函数参数。支持可变个数的参数方法称为参数收集,相应的参数称为收集参数。

一、参数收集的定义

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

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

该模式是在函数定义时在形状参数前添加一个星号。调用时,根据位置匹配无星号的形状参数和实际参数。多余的实际参数将作为元组的元素保存在星号对应的形状参数中。星号后的形状参数称为收集参数。

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

例如:我们将实现一个计算函数,其最终目标是输入一系列无限数量的数字,然后调用相应的操作符进行连续操作(如连续添加、连续减少、连续乘法等)。为了突出重点,我们只定义了该函数,并在最初的例子中输出了参数值,以验证上述对形式参数和实际参数的相关描述。该函数将在下一章中完全实现。

函数定义:

\>>>defcal(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=+

\>>>

执行截图如下:

20190529141638451.png

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

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

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

\>>>defcal(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函数中参数带星号是什么意思

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

2025-09-30
一文读懂列表解析、字典解析、集合解析

一文读懂列表解析、字典解析、集合解析

2025-09-30
多种方法合并Python中的两个列表、字典

多种方法合并Python中的两个列表、字典

2025-09-30
Python判断列表里是否有重复元素的三种方法

Python判断列表里是否有重复元素的三种方法

2025-09-30
细说python3中sort和sorted

细说python3中sort和sorted

2025-09-30
详说Python风格的函数分配参数

详说Python风格的函数分配参数

2025-09-30