一文弄懂Python中的*args 和 **kwargs

article/2025/10/14 22:34:39

1. 引言

在本文中,我们将讨论 Python 中的 *args 和 **kwargs 及其用法和示例。
闲话少说,我们直接开始吧。

2. 问题引入

在Python中写函数的时候,我们经常需要给函数传值,这些值被称为函数参数。
我们不妨来举个栗子,我们实现加法运算如下:

def add(x,y):return x+y
print(add(2,3))

输出:

5

如果进一步来说,我们需要实现三个数字求和的操作呢?很简单,我们可以修改函数以接受三个参数并将它们的总和返回,代码如下:

def add(x, y, z):return x+y+zprint(add(2, 3, 5))

输出:

10

如果此时我们又需要对四个数字求和呢?如果又变成五个数字求和呢?

当我们有可变数量的参数时,就会出现问题。我们是否应该继续修改函数以接受确切数量的参数?当然不是,我们不会这样做。实际上,以上场景为*args 和 **kwargs大显身手的地方。

3. Python中的*args

*args 允许我们将可变数量的参数传递给 Python中相应的函数。在函数中,我们应该在参数名称前使用 * 来表示传递可变数量的参数。
样例代码如下:

def add(*args):print(args, type(args))
add(2, 3)

输出如下:

(2, 3) <class 'tuple'>

因此,我们确定这些传递的参数在函数内部创建了一个元组,接着我们就可以据此来写相应的加法函数,如下所示:

def add(*numbers):total = 0for num in numbers:total += numreturn 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 作为函数参数名称来表示该参数是一个可变数量的参数。

4. Python中的**kwargs

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 = 0for amount in fruits.values():total += amountreturn 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 作为函数参数名称来表示该参数是一个可变数量的关键字参数。

5. 总结

args和kwargs可以组合起来可以传入任意的参数,这在参数未知的情况下是很有效的,同时加强了函数的可拓展性。

您学废了吗?

在这里插入图片描述
关注公众号《AI算法之道》,获取更多AI算法资讯。

在这里插入图片描述


http://chatgpt.dhexx.cn/article/BZ2RFEyO.shtml

相关文章

**kwargs python_python中**kwargs怎么用?

1、使用两个星号是收集关键字参数&#xff0c;可以将参数收集到一个字典中&#xff0c;参数的名字是字典的 “键”&#xff0c;对应的参数的值是字典的 “值”。请看下面的例子&#xff1a;>>> def print_kwargs(**kwargs): ... print(kwargs) ... >>> pr…

Python技巧:​args 和 kwargs 原来这么强大

大家好&#xff0c;今天我给大家分享Python技巧&#xff1a;​args 和 kwargs的相关技巧。喜欢记得收藏、关注、点赞。 注&#xff1a;完整代码、资料、技术交流文末获取 现在args和 kwargs参数仍然是 Python 中非常有用的特性&#xff0c;而且理解它们的威力将使您成为更有效…

*args和**kwargs是什么意思

去面试的时候&#xff0c;做了一道笔试题——什么是*args和**kwargs&#xff0c;区别在哪里&#xff1f; 有点蒙&#xff0c;好像见过&#xff0c;但是不知道具体的意思。所以回来查了一下资料&#xff0c;做一下笔记。 总的来说&#xff0c;*args代表任何多个无名参数&#x…

埃及分数c语言设计,埃及分数(四)

最优分解 源程序 下面就是求埃及分数最优分解的 C 语言源程序 EgyptianFraction.c&#xff1a; 1: #include 2: #include 3: #include 4: 5: const int SIZE 64; 6: static int wp -1, bp -1; 7: static mpz_t z, w, work[SIZE], best[SIZE]; 8: static mpq_t q1, q2; 9:…

埃及分数问题

问题描述: 古埃及人喜欢用最少的分子为 1 的真分数来表示一个真分数&#xff0c;比如7 / 8 1 / 2 1 / 3 1 / 24 。设计程序把一个真分数表示为最少的埃及分数之和的形式。 思路&#xff1a; 首先要知道什么是真分数&#xff1a;真分数是指大于0小于1的所有分数。这些分数的特…

贪心算法之埃及分数问题

1.问题&#xff1a;给定一个分数&#xff0c;如7/8&#xff0c;我们可以把它表示为1/2 1/3 1/24&#xff0c;埃及分数问题即把一个真分数表示为最少的埃及分数之和的形式&#xff0c;输入一个真分数把其分解为埃及分数之和。 2.设计思路&#xff1a;设分数为a/b,则cb/a,db%a,…

【数模】相关性分析

相关性&#xff1a;如果一个变量的变化引起了另一个变量的变化 目录 一、四种基本变量 二、 相关性分析方法 1.Pearson相关系数 2.Spearman 等级相关系数 3.Kendall tua-b 等级相关系数 4.卡方检测 5.Eta系数 *SPSS操作 三、偏相关 1.SPSS操作 2.偏相关系数和检验&…

数学建模-相关性分析及热力图

目录 一、相关性分析 二、相关性分析实例 三、三种相关系数 3.1 Pearson线性相关系数 3.2 Kendall tau系数 3.3 Spearman相关系数 4、Matlab代码 4.1 Pearson 显著性检验 4.2 Pearson 相关系数矩阵 4.3 Kendalltau相关系数矩阵 4.4 Spearman相关系数矩阵 5、代码…

R语言基础——简单相关性分析(1)

简单相关性分析&#xff08;1&#xff09; 简介1. 协方差和相关系数1.1 协方差1.2 相关系数 2. 相关性分析参考 简介 初次接触相关性分析&#xff0c;在摸索中前进&#xff0c;也顺便将笔记记录下来&#xff0c;未雨绸缪嘛&#xff01; 简单来说&#xff0c;相关性分析就是衡量…

分类变量、有序变量与数值变量相关性分析方法总结及 R 语言应用

文章目录 一、分类 & 分类相关性分析二、有序 & 有序相关性分析三、数值 & 数值相关性分析四、分类 & 有序相关性分析五、分类 & 数值相关性分析六、有序 & 数值相关性分析 本文全部假设显著性水平为0.05&#xff0c;特殊说明的除外。 一、分类 & …

数据分析方法和思维—相关性分析法

01 写在前面 在数据分析的问题中, 经常会遇见的一种问题就是相关的问题, 比如抖音短视频的产品经理经常要来问留存&#xff08;是否留下来&#xff09;和观看时长, 收藏的次数, 转发的次数, 关注的抖音博主数等等是否有相关性, 相关性有多大。 因为只有知道了哪些因素和留存比较…

python相关性分析_python实践统计学中的三大相关性系数,并绘制相关性分析的热力图...

本文首发地址&#xff1a; https://yishuihancheng.blog.csdn.net/article/details/83547648 欢迎关注我的博客【Together_CZ】&#xff0c;我是沂水寒城&#xff01; 今天我简单地使用了scipy模块进行了统计学中三大相关性分析方法&#xff08;皮尔森相关性系数、斯皮尔曼相…

数据相关性分析笔记

一、数据相关性的含义 数据类型 数据可以是连续的值&#xff0c;比如声音、图像&#xff0c;称为模拟数据。也可以是离散的&#xff0c;如符号、文字&#xff0c;称为数字数据。(ppt)数值型数据、分类型数据、定序数据。 数据相关性 数据相关性是指数据之间存在某种关系&#…

ArcGIS栅格数据图层空间相关性分析方法

ArcGIS栅格数据图层空间相关性分析方法 也不知道严谨不严谨&#xff0c;先Mark吧欸。 矢量的空间相关分析可以通过Spatial Join以后&#xff0c;导出属性表到EXCEL中&#xff0c;进行相关分析Correlation Analysis.  而两个栅格数据图层直接能不能直接在ArcMap中进行相关分…

IBM SPSS Statistics常用的相关性分析方法

灵活运用IBM SPSS Statistics做数据的统计和分析是每个数据分析师都应该掌握的技能&#xff0c;这款软件为用户提供了全面的数据分析方法&#xff0c;可以解决我们在数据分析过程中遇到的各种难题。 接下来小编就为大家介绍一下SPSS相关性分析的方法。 图1&#xff1a;SPSS软件…

神经网络相关性分析方法,神经网络相关性分析图

1、bp神经网络怎么确定输入与输出是正相关还是负相关&#xff1f; 想了解输入输出关系你可以求协方差&#xff0c;进而求peason相关系数 当然你也可以求spearman 等&#xff0c;看他们的相关度即可&#xff0c;正负就代表是正相关还是负相关&#xff0c;具体值代表相关性度量 …

重剑无锋!15种相关分析算法,总有一款适合你!

相关系数&#xff08;Correlation coefficient&#xff09;可用于评估两个变量之间的线性关系&#xff0c;它的值在-1到1之间&#xff0c;-1或1代表完美的负相关和正相关&#xff0c;0表示不存在线性关系。 计算相关系数的方法种类繁多&#xff0c;各有自己的定义以及适用情况…

Keil MDK5中对结构体变量使用结构体成员运算符.后不自动显示结构体成员

MDK5在对结构体变量使用结构体成员运算符.时是会显示结构体成员的&#xff0c;如图所示&#xff1a; 但是有时候使用结构体成员运算符.时并不会出现结构体成员&#xff0c;导致这个问题的原因是没有将自己写的文件添加到工程之中&#xff0c;解决办法如下&#xff1a; 检查是…

【C语言】结构体的创建和使用与结构体内存对齐

结构体创建 前言结构体的声明全局声明特殊声明 结构体变量定义与成员初始化成员类型变量定义匿名结构体变量定义 结构体的自引用结构体成员的访问成员初始化操作符结构体传参 结构体内存对齐对齐数对齐规则 前言 在生活中我们要描述一个人时是不是要知道他的名字、性别、年龄啊…

C语言struct结构体内存

对齐规则&#xff1a; &#xff08;i&#xff09;结构体内 成员存储位置 的起始地址为成员自身长度与默认对齐值 中的较小者的整倍数。 &#xff08;ii&#xff09;结构体A嵌套在结构体B内&#xff0c;则A在B内存储位置起始地址为 A内成员最长长度 的整数倍。 &#xff08;iii&…