#-*-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)
函数参数二:不同种类型函数参数及其调用
最新推荐文章于 2022-12-04 01:26:32 发布