Python函数的*args与**kwargs是什么?
摘要:本文详细解释 Python 中 def __init__(self, **kwargs): 的 **kwargs 用法。 1 Python 函数的 *args(可变参数元组) *args的用法 *args就是就是传递一个可变参数列表给函数实
本文详细解释 Python 中 def __init__(self, **kwargs): 的 **kwargs 用法。
1 Python 函数的 *args(可变参数元组)
*args的用法
*args就是就是传递一个可变参数列表给函数实参,这个参数列表的数目未知,甚至长度可以为0。
这段代码演示了如何使用args
def test_args(first, *args):
print('Required argument: ', first)
print(type(args))
for v in args:
print ('Optional argument: ', v)
test_args(1, 2, 3, 4)
第1个参数是必须要传入的参数,所以使用了第一个形参;
而后面3个参数则作为可变参数列表传入了实参,并且是作为元组tuple来使用的。
//代码的运行结果:
Required argument: 1
<class 'tuple'>
Optional argument: 2
Optional argument: 3
Optional argument: 4
补充说明: Python 中的元组(tuple) ,区别于 列表(list)
特性
列表 list
元组 tuple
可变性
✅ 可变(Mutable)
❌ 不可变(Immutable)
语法
[1, 2, 3]
(1, 2, 3) 或 1, 2, 3
性能
较慢
更快(内存占用更小)
用途
存储可变数据
存储固定数据、作为字典键
方法数量
多(增删改查)
少(仅查询)
2 Python 函数的 **kwargs(可变参数字典)
**kwargs的用法
而**kwargs则是将一个可变的关键字参数的字典传给函数实参,同样参数列表长度可以为0或为其他值
def test_kwargs(first, *args, **kwargs):
print('Required argument: ', first)
print(type(kwargs))
for v in args:
print ('Optional argument (args): ', v)
for k, v in kwargs.items():
print ('Optional argument %s (kwargs): %s' % (k, v))
test_kwargs(1, 2, 3, 4, k1=5, k2=6)
正如前面所说的,args类型是一个tuple,而kwargs则是一个字典dict,并且args只能位于kwargs的前面。代码的运行结果如下
Required argument: 1
<class 'dict'>
Optional argument (args): 2
Optional argument (args): 3
Optional argument (args): 4
Optional argument k2 (kwargs): 6
Optional argument k1 (kwargs): 5
什么是 **kwargs
**kwargs 是 Python 中用于接收任意数量的关键字参数的语法。它将传入的所有多余关键字参数打包成一个字典(dict)。
