关于 python 的 * (未知数量参数传参)和 ** (关键字参数) 的理解与运用

本文详细解释了Python中*args和**kwargs的用法。*args用于接收位置参数,以元组形式存储,不可变,适用于不确定数量的非关键字参数。**kwargs则用于接收关键字参数,以字典形式存储,允许通过键值对形式传递参数。通过实例展示了它们如何捕获和使用额外的参数。理解这两个语法糖对于编写灵活的函数至关重要。
摘要由CSDN通过智能技术生成

测试环境:

操作系统: Window 10
工具:Pycharm
Python: 3.7

下面就用惯例 *args**kwargs 来代表所有的 ***

为什么叫所有,因为只要是任意合法的变量加上 ***

就可以是,所谓的 *args**kwargs

既可以是 *testargs** testkwargs

也可以是 *aa** bb

在使用 *args** kwargs 前,先去理解它的英文意思

*args —— arguments / args n. [计算机]参数 (复数) ; 参数
**kwargs —— key word arguments / kwargs n. 关键字参数

在 python 语言里,*args 是作为元组类型的数据结构变量来接收控制台的数据的,实际调用并输出是 args 变量
eg:

def test(a,b,*args):
		return args

测试结果:

>>> test(1,2,3,4)
(3, 4)
>>> type(test(1,2,3,4))
<class 'tuple'>

未知数量参数传参 *args 个人理解:

a 和 b 参数接收了 1 和 2 这两个,其余的都给 *args,就是这么理解,先满足了已创建好的参数,再来满足 *args 参数,而且元组是不可更改的数据类型,有利于安全性。在这里 args 只是一个程序员比较常用的变量,可以选择自己喜欢的变量名来代替 *args

**kwargs 是一个自定义键参数传值的一个特性参数,示例如下:

def test(a,b,**kwargs):
		a = kwargs['test']
		return a
		

测试结果如下:

>>> test(1,2,test=1)
1
>>> test(1,2,test=2)
2

def test(a,b,**kwargs):
		a = kwargs['test']
		return a,kwargs
		

测试结果如下:

>>> test(1,2,test=2)
(2, {'test': 2})

**kwargs 个人理解:

**kwargs 是以接收字典的形式,来存储参数的,指定 kwargs 字典内未创建的键,再给键赋值,这样的逻辑流程。在这里每一个关键字是未被 kwargs 字典创建的,需要自己自定义好键,再给键传参数 (赋值),前面讲的是关键字传参的逻辑流程,调用 **kwargs ,其实就是在调用字典 kwargs —— kwargs.items() 字典有的方法,它都能用,本质上就是一个字典

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值