首页 python正文

Python函数参数带*号有什么用?

启明SEO python 2023-01-29 15:00:10 549 0 函数参数

1.函数参数定义中使用独立的*符号:

在函数定义时,使用了一个独立的*符号,这表示在*符号后面的参数,调用函数时,必须使用key=value的形式进行参数传递。在Python的标准库中,有不少模块的接口函数的定义都在使用这种方式。

比如:

def a(a,*,b):
    print(a,b)

如果我们这样调用a(1,2)就会报错,正确的调用方式是a(1,b=2)


2.tuple参数(*args)

我们在设计函数参数的时候,如果使用一个*符号后跟字母,表示这是一个tuple参数,tuple内数据的个数,就不限制了。

*args参数在函数内部,是一个tuple类型的对象,使用时要去掉前面的*符号,直接使用args。在调用函数时,看不出来这是一个tuple,调用时并无特别之处,只是参数的数量不确定,可以很多,注意哦,也可以没有参数。

实现不限参数个数的函数接口,一般都使用这种方式,tuple对象内的各数据类型应该保持一致,如果不一致,大概率这不是一个好的设计,因为对各数据的处理方式会不一样。

比如:

def b(*a):
    print(a)

b(1)
b(1,2)

3.dict参数(**kwargs)

设计函数参数时,如果使用两个**符号后跟字母,表示这个参数是一个dict对象。这种方式也可实现函数参数的个数不限。

采用**kwargs参数,函数调用时,要写成key=value的形式。同样的,这种方式也兼容没有参数输入。

使用这种方式的dict参数,函数内部可能需要预先知道有哪些key值可以使用,或者就是直接遍历所有的key和value。

def b(**a):
    print(a)

b(a=1)
b(a=1,b=2)


评论

Python好学公众号

好文推荐

实时访客入口页面出现bd_vid=标识是什么原因

实时访客入口页面出现bd_vid=标识是什么原因

最近查看百度实时访客,总是会看到入口页面会多......

有了微信视频号,但是没有发布权限,怎么开通

有了微信视频号,但是没有发布权限,怎么开通

视频号是微信在2020年1月19号开始内测的......

如何用python抓取爱企查企业信息

如何用python抓取爱企查企业信息

前段时间,经理让我去找一些企业的信息,我平常......

服务器配置低,宝塔面板安装IIS总是安装不上怎么办

服务器配置低,宝塔面板安装IIS总是安装不上怎么办

对于一般企业网站或者博客来说,对服务器的配置......

如何修改浏览器指纹,Canvas指纹、Webgl指纹、Audio指纹修改方法?

如何修改浏览器指纹,Canvas指纹、Webgl指纹、Audio指纹修改方法?

修改浏览指纹的方法其实也是很简单,主要使用到......

win10下安装MYSQL后,提示Can't connect to MySQL server on localhost (10061)相关问题解决方法

win10下安装MYSQL后,提示Can't connect to MySQL server on localhost (10061)相关问题解决方法

我遇到的问题是电脑原先安装过mysql,卸......