• 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 )

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

  • 相关阅读:
    Android测试工具 UIAutomator入门与介绍
    C#异步编程
    懒得找,存个笔记:easyui combogrid 下拉+关键字搜索
    mssql replace
    序列化类型为XX的对象时检测到循环引用
    shell脚本运行python命令
    python技巧
    边缘检测测评标准
    mybatis 手动生成可执行sql
    Linux如何扩容物理文件系统分区
  • 原文地址:https://www.cnblogs.com/dadadechengzi/p/6293193.html
Copyright © 2020-2023  润新知