博客园  :: 首页  :: 管理

关于python函数中带*星号参数-收集参数的使用说明

Posted on 2022-10-04 15:31  520_1351  阅读(94)  评论(0编辑  收藏  举报

在python中,定时函数时,一般就得确定函数的参数的个数

当然函数可以没有参数,也可以指定明确的形式参数的个数,那样在调用这个函数时,实参的个数就需要与形参个数一致

def PrintAuthor(name):
    print(name)
    
PrintAuthor("QQ:5201351")

如果此时不传递参数,则会报错:TypeError: PrintAuthor() missing 1 required positional argument: 'name'

当然与是否在函数体中使用了那个形参无关,即使没有引用到形参,也同样会报上面的错误~

反之如果定时函数时没有形参,而使用函数时却传递了参数,那么也报错:

TypeError: PrintAuthor() takes 0 positional arguments but 1 was given

但在有时候,我们可能会希望用户使用函数时,提供任意数量的参数,函数都能正常的运行,这时应该怎么办呢?

这时我们。就可以使用到带*星号参数,也就是python函数的收集参数功能,如下:

def PrintParms(*params):
    print(params)
    
PrintParms(1,2,3,"QQ:5201351")

运行结果将如下:

(1, 2, 3, 'QQ:5201351')

从定时函数和结果,我们可以看出,参数前面的星号将提供的所有值都放在一个元组中了,也就是将这些值收集起来了~

关于带有参数收集的函数,下面笔者在列举一些更高级的用法:

1、带星号的参数,会收集余下的所有参数,那么也就是说可以前面是定义几个形式参数,最后使用带星号的参数

2、当然带星号的参数,也不一定,一定需要放到最后面,最后还可以定义关键字参数,星号不会收集关键字参数的

这里笔者通过一个简单的例子就可以说明上面的两种情况,如下

def PrintParms(x,*params,z):
    print(x)
    print(params)
    print(z)
    
PrintParms(1,2,3,"QQ:5201351",z="https://www.cnblogs.com/5201351")

运行结果如下:

1
(2, 3, 'QQ:5201351')
https://www.cnblogs.com/5201351

对于有关键字数量,在传参时,变量参数的名称需要与形参关键字一样,如上可以看到使用时,使用的z=xxxxx 

 

 

尊重别人的劳动成果 转载请务必注明出处:https://www.cnblogs.com/5201351/p/16753838.html