现在的位置: 首页 > 综合 > 正文

11-python_函数-冗余参数

2013年10月26日 ⁄ 综合 ⁄ 共 1756字 ⁄ 字号 评论关闭

函数-冗余参数
 - 向函数传 元组  - *tupleName
        def functionName(arg1, arg2) :
            print arg1, arg2
        tupleName = (1, 2)
        functionName(*tupleName)

 - 向函数传 字典  - **dictName  
        def functionName(arg1, arg2) :
            print arg1, arg2
        dictName = {"arg1":"value1", "arg2":"value2"}
        functionName(**dictName) # 传value
        functionName(*dictName)  # 传key

 - 处理多余参数
    - functionName(*args)

    - functionName(**keywordargs)


1. 引入

    >>> def f(x):
    ...     print x
    ...
    >>> f(123)
    123
    >>> f('hello')
    hello
    >>> f(range(3))
    [0, 1, 2]
    >>> f( (1,2,3) )
    (1, 2, 3)
    >>> f( {1:'a', 2:'b'} )
    {1: 'a', 2: 'b'}

2. 格式化输出

    >>> print "%s"
    %s
    >>> print "%s" % "abc"
    abc
    >>> print "%s, %s" % ("a", "b")
    a, b

3. 用 元组的元素 给 每个 形参 赋值

 3.1 error
    >>> def f(arg1, arg2) :
    ...     print arg1, arg2
    ...
    >>> t = ('a', 'b')
    >>> f(t)
    Traceback (most recent call last):
      File "<stdin>", line 1, in <module>
    TypeError: f() takes exactly 2 arguments (1 given)
 
 3.2 正确
------------------------
    def f(arg1, arg2) :
        print arg1, arg2
        print "%s, %s" % (arg1, arg2)

    t = (1, 2)    
    f(*t)

-------output----------
    1 2
    1, 2
------------------------

4. 用 字典的元素 给 每个 形参 赋值

------------------------
    def f(arg1, arg2) :
        print arg1, arg2

    d = {"arg2":"value2" ,  "arg1":"value1"}
    f(*d)
    f(**d)

-------output----------
    arg1 arg2
    value1 value2
------------------------

5. 处理多余实参


 5.1 以 元组 处理 冗余参数
------------------------
    def f(x, *args) :
        print "x =", x
        print "args =", args

    f(1)
    f(1,2)
    f(1,2,3)

-------output----------
    x = 1
    args = ()
    x = 1
    args = (2,)
    x = 1
    args = (2, 3)
------------------------

 5.2 以 元组+字典 处理 冗余参数
------------------------
    def f(x, *args, **kwargs) :
        print "x =", x
        print "args =", args
        print "kwargs =", kwargs

    f(1)
    f(1, 2)
    f(1, 2, z = 3)
    # f(x = 1, 2, z = 3) # error
    f(x = 1, y = 2, z = 3)

-------output----------
    x = 1
    args = ()
    kwargs = {}
    x = 1
    args = (2,)
    kwargs = {}
    x = 1
    args = (2,)
    kwargs = {'z': 3}
    x = 1
    args = ()
    kwargs = {'y': 2, 'z': 3}
------------------------

抱歉!评论已关闭.