• python中的参数


    在Python中定义函数,可以用必选参数、默认参数、可变参数和关键字参数,这4种参数都可以一起使用,或者只用其中某些,但是请注意,

    参数定义的顺序必须是:必选参数、默认参数、可变参数和关键字参数

    请看实例代码:

    def func(a,b,c=0,*args,**kw):
        print 'a=',a,'b=',b,'c=',c,'args=',args,'kw=',kw
    
    >>> func(1,2)
    a= 1 b= 2 c= 0 args= () kw= {}
    >>> func(1,2,3)
    a= 1 b= 2 c= 3 args= () kw= {}
    >>> func(1,2,4,(1,3,4,5))
    a= 1 b= 2 c= 4 args= ((1, 3, 4, 5),) kw= {}
    >>> func(1,2,4,11,22,33,44,55)
    a= 1 b= 2 c= 4 args= (11, 22, 33, 44, 55) kw= {}
    >>> func(1,2,4,11,22,33,44,55,{'x':'xx','y':'yy'})
    a= 1 b= 2 c= 4 args= (11, 22, 33, 44, 55, {'y': 'yy', 'x': 'xx'}) kw= {}
    >>> func(1,2,4,11,22,33,44,55,x='xx',y='yy')
    a= 1 b= 2 c= 4 args= (11, 22, 33, 44, 55) kw= {'y': 'yy', 'x': 'xx'}
    #也可以这么写
    def func(a,b,c=0,*args,**kw):
        print 'a=',a,'b=',b,'c=',c,'args=',args,'kw=',kw
    
    args = (1, 2, 3, 4)
    kw = {'x': 99}
    func(1,2,4,*args, **kw)
    a= 2 b= 3 c= 4 args= (5, 6, 7, 8) kw= {'y': 100, 'x': 99}
    def show(*args):
        for item in args:
            print item
    
    tl = (11,'aa','bb','cc')
    show(*tl)
    #print
    11
    aa
    bb
    cc
    
    def show2(**kw):
        for item in items():
            print item
    user_dict
    = {'k1':123,'k2':456} show2(**user_dict) #print ('k2', 456) ('k1', 123)

    总结:

    要注意定义可变参数和关键字参数的语法:

    *args是可变参数,args接收的是一个tuple;

    **kw是关键字参数,kw接收的是一个dict。

    以及调用函数时如何传入可变参数和关键字参数的语法:

    可变参数既可以直接传入:func(1, 2, 3),又可以先组装list或tuple,再通过*args传入:func(*(1, 2, 3))

    关键字参数既可以直接传入:func(a=1, b=2),又可以先组装dict,再通过**kw传入:func(**{'a': 1, 'b': 2})

     
  • 相关阅读:
    匿名对象、栈空间和堆空间,String的两种实例化方式的比较,"=="和"equals()"的区别
    间接调用父类私有成员方法、通过抽象类可以达到不需要实现接口所有方法的目的
    this关键字、构造快和静态块
    java可变参数的支持和foreach输出
    java-循环结构体
    switch和if else的区别和应用
    作用域对象
    JavaWeb1
    JavaScript 表单编程
    好久不见
  • 原文地址:https://www.cnblogs.com/gide/p/5550418.html
Copyright © 2020-2023  润新知