Python的*arg和**kwargs用法是什么
Admin 2022-09-07 群英技术资讯 479 次浏览
在本文中,我们将讨论 Python 中的 *args 和 **kwargs 及其用法和示例。
闲话少说,我们直接开始吧。
在Python中写函数的时候,我们经常需要给函数传值,这些值被称为函数参数。
我们不妨来举个栗子,我们实现加法运算如下:
def add(x,y): return x+y print(add(2,3))
输出:
5
如果进一步来说,我们需要实现三个数字求和的操作呢?很简单,我们可以修改函数以接受三个参数并将它们的总和返回,代码如下:
def add(x, y, z): return x+y+z print(add(2, 3, 5))
输出:
10
如果此时我们又需要对四个数字求和呢?如果又变成五个数字求和呢?
当我们有可变数量的参数时,就会出现问题。我们是否应该继续修改函数以接受确切数量的参数?当然不是,我们不会这样做。实际上,以上场景为*args 和 **kwargs大显身手的地方。
*args 允许我们将可变数量的参数传递给 Python中相应的函数。在函数中,我们应该在参数名称前使用 * 来表示传递可变数量的参数。
样例代码如下:
def add(*args): print(args, type(args)) add(2, 3)
输出如下:
(2, 3) <class 'tuple'>
因此,我们确定这些传递的参数在函数内部创建了一个元组,接着我们就可以据此来写相应的加法函数,如下所示:
def add(*numbers): total = 0 for num in numbers: total += num return total
调用代码如下:
print(add(2, 3)) print(add(2, 3, 5)) print(add(2, 3, 5, 7)) print(add(2, 3, 5, 7, 9))
输出如下:
5
10
17
26
需要注意的是,上述函数的参数的名称不一定是 args,它可以是任何其他名字,在上述代码中,它是numbers,但是通常的做法就是使用 *args 作为函数参数名称来表示该参数是一个可变数量的参数。
kwargs 是 keyword arguments 的缩写,表示关键字参数。** kwargs 允许我们将可变数量的关键字参数传递给 Python函数。在函数中,我们在参数名称前使用双星号 ** 来表示这种类型的参数。
样例代码如下:
def total_fruits(**kwargs): print(kwargs, type(kwargs)) total_fruits(banana=5, mango=7, apple=8)
输出如下:
{'banana': 5, 'mango': 7, 'apple': 8} <class 'dict'>
此时我们可以看到,在上述情况下,字典作为参数进行传递,并且这些参数在函数内部创建了一个字典,接着,我们可以实现函数 total_fruits() 用以返回水果的总数。
def total_fruits(**fruits): total = 0 for amount in fruits.values(): total += amount return total
调用代码如下:
print(total_fruits(banana=5, mango=7, apple=8)) print(total_fruits(banana=5, mango=7, apple=8, oranges=10)) print(total_fruits(banana=5, mango=7))
输出如下:
20
30
12
需要注意的是,参数的名称不一定是 kwargs,它可以是任何名字,在上述代码中,它是**fruits。但是通常的做法就是使用 **kwargs 作为函数参数名称来表示该参数是一个可变数量的关键字参数。
args和kwargs可以组合起来可以传入任意的参数,这在参数未知的情况下是很有效的,同时加强了函数的可拓展性。
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:mmqy2019@163.com进行举报,并提供相关证据,查实之后,将立刻删除涉嫌侵权内容。
猜你喜欢
这篇文章主要介绍了使用pandas两列转换成字典的健和值方式,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
这篇文章给大家分享的是有关Pytorch中gather的用法的内容,很多新手对于gather的用法不是很了解,因此分享一些给大家做个参考,希望大家阅读完这篇能有收获,接下来一起跟随小编看看吧。
近日,据数码博主透露,苹果iPhone 15系列国行版的备货量预计下调30%左右,市场预期尚不明确。上周,苹果股价大跌,三大股指均累计下跌,从上周的大涨中回落。
Python 有一个叫做argparse的内置库,可以用它来创建一个命令行界面。本文将详解如何利用argparse实现创建一个命令行应用程序,需要的可以参考一下
在使用Python的过程中,由于需求原因,我们经常需要在文本或者网页元素中用Python正则表达式匹配中文,下面这篇文章主要给大家介绍了关于python用正则表达式提取/匹配中文汉字的相关资料,需要的朋友可以参考下
成为群英会员,开启智能安全云计算之旅
立即注册Copyright © QY Network Company Ltd. All Rights Reserved. 2003-2020 群英 版权所有
增值电信经营许可证 : B1.B2-20140078 粤ICP备09006778号 域名注册商资质 粤 D3.1-20240008