zoukankan      html  css  js  c++  java
  • 参数*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’是个字典。
  • 相关阅读:
    数据结构与算法10 微服务接口的鉴权和限流 [MD]
    .Net开发环境配置[OS/IIS/VS...]
    一、单件模式
    正则表达式调试器1.1
    C#2.0新特性系列文章转载
    巧用VS2005解决VS2005网站发布不便问题
    配置VS2005,加速VS2005运行速度
    转载:ASP.NET运行机制 和 图片盗链问题
    ASP.NET页面提前处理问题
    关于NTLM认证的python和.NET实现
  • 原文地址:https://www.cnblogs.com/JackShi/p/12698021.html
Copyright © 2011-2022 走看看