Python函数args与kwargs的用法

*表达式

在讨论*args**kwargs之前,我们需要先介绍一下Python中的*表达式

1
2
3
4
5
6
7
8
9
>>> user_info = ('snowball', 'USTC', '183xxxx1966', '188xxxx7604')
>>> name, school, *phone_number = user_info

>>> name
'snowball'
>>> school
'USTC'
>>> phone_number
['183xxxx1966', '188xxxx7604']

*phone_number表示的是一个列表,它将存储元组中剩下的所有元素。即使元组中剩下元素的个数为0,代码也不会报错,因为此时*表达式所对应的是一个空列表。

*args**kwargs

*args**kwargs的写法只是约定俗称的,我们完全可以按照自己的喜好来给参数变量命名,例如*var**vars

*args**kwargs都主要用于函数定义,表示的是可将不定数量的参数传递给一个函数。这里不定数量的含义是指,我们预先并不清楚,函数的使用者究竟会传递多少个参数给函数。这时,使用*args**kwargs将会帮助我们处理这种情况。

*args的用法

*args用来向函数传递一个非键值对的可变长度的参数列表

**kwargs的用法

**kwargs中的kw的含义是key-word pairs,也就是键值对。**kwargs用来向函数传递一个不定长度的键值对。如果我们想要我们的函数能够处理带名字的参数,我们应该使用**kwargs

注意:当我们同时使用*args**kwargs时,*args参数必须要在**kwargs前。

一个小例子

1
2
3
4
def fun(*args,**kwargs):
print('args=', args)
print('kwargs=',kwargs)
fun(1,2,3,4,A='a',B='b',C='c',D='d')

结果如下:

1
2
args= (1, 2, 3, 4)
kwargs= {'A': 'a', 'B': 'b', 'C': 'c', 'D': 'd'}

参考

赞赏一杯咖啡
0%