• 参数*args与**kwargs


    参考网址:https://www.cnblogs.com/cwind/p/8996000.html

    1. *

    1. 定义一个含三个位置参数的函数”fun”.
        >>> def fun(a,b,c):
        ...     print a,b,c
        ... 
    2. 传三个位置参数调用此函数
        >>> fun(1,2,3)
        1 2 3       #输出
      可以看到出入三个位置参数调用此函数,会打印出三个参数
    
    3. 现在我们定义一个含三个整数的数列,并使用’*’
        >>> l = [1,2,3]
        >>> fun(*l)
        1 2 3       #输出
      “*”拆开数列’l’的数值作为位置参数,并吧这些位置参数传给函数’fun’来调用

    2. *args

    1. 修改函数的定义:
    >>> def fun(*args):
        ...     print args
        ... 
    2. 传一个位置参数调用此函数     
    >>> fun(13)     (13,)   传多个参数调用此函数     >>> fun(11,93,43)     (11, 93, 43)

    “*args”接收元组作为位置参数,而非是常见的参数列表,它可以接受任意个参数

    3. **

    定义一个三个参数的函数,并用多种方式调用:
        >>> def fun(a, b, c):
        ...     print a, b, c
        ... 
        >>> fun(1,5,7)
        1 5 7
        >>> fun(a=1,b=5,c=7)
        1 5 7
      使用”**”调用函数,这种方式我们需要一个字典.注意:在函数调用中使用”*”,我们需要元组;在函数调用中使用”**”,我们需要一个字典     >>> d={'b':5, 'c':7}     >>> fun(1, **d)     1 5 7

    “**”可以unpack字典,并将字典中的数据项作为键值参数传给函数。因此,上例中”fun(1, **d)”的写法与”fun(1, b=5, c=7)”等效. 

    4. **kwargs

    定义函数”fun”:
        >>> def fun(a, **kwargs):
        ...     print a, kwargs
        ... 
    此函数只用一个位置参数,因为常规参数列表中只有一个变量’a’.但是通过”**kwargs”,可以传多个键值参数。
    
        >>> fun(1, b=4, c=5)
        1 {'c': 5, 'b': 4}
        >>> fun(45, b=6, c=7, d=8)
        45 {'c': 7, 'b': 6, 'd': 8}
    用”**kwargs”定义函数,kwargs接收除常规参数列表职位的键值参数字典。在这里’kwargs’是个字典。
  • 相关阅读:
    了解 DICOM 基本协议与其相关
    C# PropertyInfo 反射实体部分字段
    ref(引用参数) 和 out(输出参数) 区别
    Linq Where Expression<Func<T,bool>> 查询条件
    随笔规范
    C# 集合分析
    C# 几种常用的数据类型
    关于 C# 方法参数的理解
    打算开始写博客了
    有趣的算法、逻辑面试题
  • 原文地址:https://www.cnblogs.com/JackShi/p/12698021.html
Copyright © 2020-2023  润新知