欢迎点击「算法与编程之美」↑关注我们!
本文首发于微信公众号:"算法与编程之美",欢迎关注,及时了解更多此系列文章。
在平时的学习或者开发过程中,经常会遇到下面的函数定义形式,在形参定义列表中,可能会有一个星*,也可能会有两个星**,如下所示:
def foo(*args, **kwargs): pass
你了解二者之间的区别吗?一个星和两个星的作用是什么?什么情况下会使用?如果你能一眼就得出答案,那么本文对于你来说就没什么价值,反之,本文还是非常值得一看的。
首先来看一个简单的两个数求和的函数,如下所示:
def sum(a,b): return a+b
上面代码实现了两个数的求和,如果要实现任意多个数的求和,那该怎么办呢?这个时候就轮到一个星派上用场了。
def sum1(*args): sum = 0 for i in args: sum = sum + i return sum sum1(1,2,3,4,5) # 15
上面的代码非常的简单易懂,也非常易于理解。所谓一个星指的就是函数接收任意多个参数,可以理解为是一个任意大小的一维数组,这样参数信息就保存在这个数组中,函数体中可以遍历这个数组,进行相关运算。
了解了一个星的作用之后,接下来就可以看看两个星的作用了。两个星与一个星相同的地方在于都是可以接收任意多个参数,不同之处在于,两个星接收的每个参数都有一个名字,是一种字典类型的结构。
def foo(**kwargs): for key, value in kwargs.items(): print('{} - {}'.format(key,value))
foo(name='chen',age=12,gender='male') 输出结果为: name - chen age - 12 gender - male
本文介绍了函数定义中常见的一个星与两个星的用法及区别,其用途非常广泛,主要是用来解决函数接收任意多个参数的场景。
参考文献:
[1] keyword arguments in python. https://treyhunner.com/2018/04/keyword-arguments-in-python/
where2go 团队
微信号:算法与编程之美

长按识别二维码关注我们!
温馨提示:点击页面右下角“写留言”发表评论,期待您的参与!期待您的转发!