zoukankan      html  css  js  c++  java
  • Python 可变长度函数参数

    func( *tuple_grp_nonkw_args, **dict_grp_kw_args )

    在编程的过程中,我们可能会遇到函数参数个数不固定的情况。这时就需要使用可变长度的函数参数来实现我们的功能。在Python中,有两种变长参数,分别是元组(非关键字参数)和字典(关键字参数).

    1. 元组可变长参数

    当函数调用中包括一个元组变长参数*tuple_grp_nonkw_args时,除去前面固定位置参数和关键字参数的其余参数将按顺序插入一个元组进行访问.

    def fun_test(positional_arg,keyword_arg="default",*tuple_arg):
        print "positional arg: ", positional_arg
        print "key word arg: ", keyword_arg
        for each_additional_arg in tuple_arg:
            print "additional_arg: ",each_additional_arg
            
    
    fun_test(1)  
    
    positional arg:  1
    key word arg:  default
      
    fun_test(1,2)    
    
    positional arg:  1
    key word arg:  2
    
    fun_test(1,2,3)
    
    positional arg:  1
    key word arg:  2
    additional_arg:  3
    
    fun_test(1,2,3,"a")
    
    positional arg:  1
    key word arg:  2
    additional_arg:  3
    additional_arg:  a

    2.字典可变长参数

    字典变长参数中,额外的关键字参数被放入了一个字典进行使用。字典中,键为参数名,值为相应的参数值。其表示方式是放在函数参数最后的**开头的参数,如**dict_grp_kw_args.

    def fun_test2(positional_arg,keyword_arg="default",**dict_arg):
        print "positional arg: ", positional_arg
        print "key word arg: ", keyword_arg
        for k,v in dict_arg.iteritems():
            print "dict arg: %s = %s" %(k,v)
    
    fun_test2(1)    
    
    positional arg:  1
    key word arg:  default
    
    fun_test2(1,2)    
    
    positional arg:  1
    key word arg:  2
    
    fun_test2(1,2,x1=3)    
    
    positional arg:  1
    key word arg:  2
    dict arg: x1 = 3
    
    fun_test2(1,2,x1=3,x2="test")   
    
    positional arg:  1
    key word arg:  2
    dict arg: x2 = test
    dict arg: x1 = 3
    #c在这里是一个tuple,我们在调用funcD的时候,至少要传递2个参数,2个以上的参数,都放到c里了,如果只有两个参数,那么c就是一个empty tuple

    def
    funcD(a, b, *c): print a print b print "length of c is: %d " % len(c) print c funcD(1,2,3,4,5,6,7) 1 2 length of c is: 5 (3, 4, 5, 6, 7)

    #b是一个dict对象实例,它接受了关键字参数b,c,d
    def funcF(a, **b): print a for x in b: print x + ": " + str(b[x]) funcF(100,b=1,c="a",d=3) 100 c: a b: 1 d: 3

     tupe_args=(3,4,"five")

     dict_args={"x1":1,"x2":"test"}

     fun_test(1,2,*tupe_args)

     positional arg: 1
     key word arg: 2
     additional_arg: 3
     additional_arg: 4
     additional_arg: five

     fun_test2(1,2,**dict_args)

     positional arg: 1
     key word arg: 2
     dict arg: x2 = test
     dict arg: x1 = 1

    3.注意

    函数调用的完整表达形式为:
    func( positional_args, keyword_args, *tuple_grp_nonkw_args, **dict_grp_kw_args )

    在使用的过程中,所有参数都是可选的,但应当注意的是:上面四种参数的位置是不可调换的!

  • 相关阅读:
    OC与AS3的观察者模式比较以及外部回调
    判断矩形重叠
    2010谷歌校园招聘笔试题
    2011谷歌校园招聘笔试题
    2012Google校园招聘笔试题
    2013谷歌校园招聘笔试题2
    2013谷歌校园招聘笔试题
    2012搜狗校园招聘笔试题
    2013搜狗校园招聘笔试题
    搜狐面试题
  • 原文地址:https://www.cnblogs.com/dadadechengzi/p/6293193.html
Copyright © 2011-2022 走看看