zoukankan      html  css  js  c++  java
  • python function with variadic arguments or keywords(dict) 可变参数与关键字参数

    *args 表示任意个普通参数,调用的时候自动组装为一个tuple

    **kwags 表示任意个字典类型参数, 调用的时候自动组装成一个dict

    args和kwags是两个约定俗成的用法。

    变长参数可以用*args来解包

    >>> args = [3,6]
    >>> list(range(*args))
    [3, 4, 5]

    >>> def f1(*args, **kwargs):
    ...    print args, kwargs
    ...
    >>> l = [1, 2, 3]
    >>> t = [4, 5, 6]
    >>> d = {'a':7, 'b':8, 'c':9}

    >>> f1()
    () {}

    >>> f1(1,2,3)
    (1, 2, 3) {}

    >>> f1(1,2,3,'hello')
    (1, 2, 3, 'hello') {}

    >>> f1(a=1,b=2,c=3)
    () {'a': 1, 'c': 3, 'b': 2}

    >>> f1(a=1,b=2,c=3,d='hello')
    () {'a': 1, 'c': 3, 'b': 2, 'd': 'hello'}

    >>> f1(1,2,3,a=1,b=2,c=3)
    (1, 2, 3) {'a': 1, 'c': 3, 'b': 2}

    >>> f1(*l)
    (1, 2, 3) {}
    >>> f1(*t)
    (4, 5, 6) {}
    >>> f1(**d)
    () {'a': 7, 'c': 9, 'b': 8}

    >>> f1(1,2,*t)
    (1, 2, 4, 5, 6) {}
    >>> f1(1,2,*l)
    (1, 2, 1, 2, 3) {}

    >>> f1(1,2,*t,s='world',**d)
    (1, 2, 4, 5, 6) {'a': 7, 'c': 9, 'b': 8, 's': 'world'}

    >>> def f2(arg1, arg2, *args, **kwargs):
    ...     print arg1, arg2, args, kwargs
    ...
    >>> f2(1,2,3,a=1,b=2,c=3)
    1 2 (3,) {'a': 1, 'c': 3, 'b': 2}
    >>> f2(1,2,*t)
    1 2 (4, 5, 6) {}
    >>> f2(1,2,*t,s='hello',**d)
    1 2 (4, 5, 6) {'a': 7, 'c': 9, 'b': 8, 's': 'hello'}

  • 相关阅读:
    codevs1044 拦截导弹(最长不下降子序列dp)
    codevs1014 装箱问题(DP)
    codevs1068 乌龟棋(DP)
    angular.extend vs angular.copy
    angular input框点击别处 变成不可输入状态
    angular select框 option空行
    angular ui 路由传参
    setTimeout 传参
    设置请求头信息的不同方式
    vertical-align
  • 原文地址:https://www.cnblogs.com/guoxueyuan/p/8605183.html
Copyright © 2011-2022 走看看