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

#-*-coding:utf-8-*-
'''
Created on 2016年3月24日

@author: Zroad
'''

#1、位置参数,从左至右进行匹配
def f1(a,b,c):
    print a,b,c

f1(3,2,1) #3 2 1
f1(19,9,29) #19 9 29

#2、关键字参数:通过参数名进行匹配
def f2(a,b,c):
    print a,b,c

f2(c=3,b=2,a=1) #1 2 3
f2(b=20,c=10,a=5) #5 20 10

#3、默认参数:为没有传入值的参数定义参数值
def f3(a=1,b=2,c=3):
    print a,b,c
f3() #5 20 10
f3(c=4) #1 2 4
f3(a=5,c=900) #5 2 900
f3(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 6
print '-----------------'

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,d

args = [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: func
305
"""
print tracer(func1, 1, b=4, c=100, d=200)
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值