函数参数二:不同种类型函数参数及其调用

来源:互联网 发布:淘宝上的本科证是真的 编辑:程序博客网 时间:2024/05/06 19:27
#-*-coding:utf-8-*-'''Created on 2016年3月24日@author: Zroad'''#1、位置参数,从左至右进行匹配def f1(a,b,c):    print a,b,cf1(3,2,1) #3 2 1f1(19,9,29) #19 9 29#2、关键字参数:通过参数名进行匹配def f2(a,b,c):    print a,b,cf2(c=3,b=2,a=1) #1 2 3f2(b=20,c=10,a=5) #5 20 10#3、默认参数:为没有传入值的参数定义参数值def f3(a=1,b=2,c=3):    print a,b,cf3() #5 20 10f3(c=4) #1 2 4f3(a=5,c=900) #5 2 900f3(b=5,a=6,c=8) #6 5 8#4、可变参数:收集任意多基于位置或关键字的参数def f4(*param): #将所有位置相关的参数收集到一个新的元组中,并将该元组赋值给param    for x in param:        print x, f4(1,2,3,4,5,6) #1 2 3 4 5 6print '-----------------'def f5(**param): #对关键字参数有效,**将关键字参数转换为字典,赋值给param    print param f5(a=1,b=2,c=3,d=4) #{'a': 1, 'c': 3, 'b': 2, 'd': 4}#5、可变参数解包:传递任意多的基于位置或关键字的参数;可变参数解包后的个数必须同定义的函数参数个数一致def func(a,b,c,d):    print a,b,c,dargs = [1,2,3,4]func(*args) #1 2 3 4#args1 = [1,2,3]#func(*args1)"""关键字参数做可变参数解包时,字典的键必须同函数的参数保持一致"""args2 = {'a':1,"b":2,"c":3,"d":4}func(**args2)  #1 2 3 4#6、以通用的形式调用任意函数,提前并不知道函数的名称和参数def tracer(func1, *pargs, **kargs):    """    varargs调用语法    """    print "calling:",func.__name__    return func1(*pargs, **kargs)def func1(a,b,c,d):    return a + b + c + d"""输出结果:calling: func305"""print tracer(func1, 1, b=4, c=100, d=200)
0 0
原创粉丝点击