Python fun(*args,**kwargs)中的*arg
2021-11-22 本文已影响0人
Gakki0725
作者:Gakki
01. Python 函数中的两种参数
- 在 Python 中有两种参数:
- 位置参数(positional argument):位置参数只能由参数位置决定
- 关键词参数(keyword argument):关键词参数只需要用 keyword = somekey 的方法即可传参
注:位置参数只能由参数位置决定。这也就决定了位置参数一定要在前面,否则关键词参数数量的变化都会使得位置无法判断。
02. 理解 * 的作用
- * 的作用是将 tuple 或者 list 中的元素进行分开传入,作为多个参数
def func(a, b, c):
print(a, b, c)
# test_list 的长度必须和函数中参数的个数相同,否则会报错
test_list = [1, 2, 3]
func(*test_list)
输出结果:
1 2 3
- * 拆开数列 test_list 的数值作为 位置参数,并把这些位置参数传送给函数 func 来调用。
03. 理解 ** 的作用
- ** 的作用是将字典进行解析,并将字典中的数据项作为键值参数传给函数
def func(a, b, c):
print(a, b, c)
test_dic = {"c": 1, "b": 2}
func(33, **test_dic)
func(33, 22, 11)
输出结果:
33 2 1
33 22 11
04. 理解函数中的 *args 和 **kwargs
- kwargs:keyword argument
- args:argument
注:一般情况下,*args 在 **kwargs 前面。
def func(a, b, *args, **kwargs):
"""
参数 a,b 表示常规参数列表
args 接收元组作为位置参数,而非是常见的参数列表
"""
print(a, b)
print(args)
print(kwargs)
func(33, 22, 11, 100, key1=1, key2=2)
输出结果:
33 22
(11, 100)
{'key1': 1, 'key2': 2}
- *args 把剩下没有关键字的参数集合起来形成 tuple
- **kwargs 把有关键字的集合起来装在一个字典里
*args 实现 sum
def func_sum(*args):
total = 0
for value in args:
total += value
return total
list1 = [1, 2, 3]
print(func_sum(*list1))
输出结果:
6