美文网首页Python已看pythonPython
Python fun(*args,**kwargs)中的*arg

Python fun(*args,**kwargs)中的*arg

作者: Gakki0725 | 来源:发表于2021-11-22 20:25 被阅读0次
作者: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

相关文章

网友评论

    本文标题:Python fun(*args,**kwargs)中的*arg

    本文链接:https://www.haomeiwen.com/subject/foletrtx.html