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’是个字典。
  • 相关阅读:
    ‘Host’ is not allowed to connect to this mysql server
    centos7安装mysql
    further configuration avilable 不见了
    Dynamic Web Module 3.0 requires Java 1.6 or newer
    hadoop启动 datanode的live node为0
    ssh远程访问失败 Centos7
    Linux 下的各种环境安装
    Centos7 安装 python2.7
    安装scala
    Centos7 安装 jdk 1.8
  • 原文地址:https://www.cnblogs.com/JackShi/p/12698021.html
Copyright © 2011-2022 走看看