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 "
", line 1, in 
    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}

http://www.jbxue.com/article/12891.html