美文网首页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