1调用函数时可使用的参数类型
必备参数
命名关键子参数(Keyword Arguments)
默认参数(Default Argument Values)
不定长参数( Arbitrary Argument)
关键字参数
2必备参数
必备参数须以正确的顺序传入函数。调用时的数量必须和声明时的一样
def printme(str):
"打印传入的字符串到标准显示设备上"
print str
return #None
#必备参数
printme("hello")
3命名关键字参数(keyword)
使用命名关键字参数允许函数调用时参数的顺序与声明时不一致,因为 Python 解释器能够用参数名匹配参数值
def printme(str):
"打印传入的字符串到标准显示设备上"
print str
return #None
#关键字参数(keyword argument)
printme(str="My String")
下例能将关键字参数顺序不重要展示得更清楚
#可写函数说明
def printinfo( name, age ):
"打印任何传入的字符串"
print "Name: ", name;
print "Age ", age;
return;
#调用printinfo函数
printinfo( age=50, name="miki" );
4默认参数(缺省参数)
调用函数时,缺省参数的值如果没有传入,则被认为是默认值
#缺省参数
def printuser(name,age=35):
print "Name:",name
print "Age:",age
return
printuser(name="sheldonshen",age=23)#关键字参数
printuser(name="congbird") #关键字参数和缺省参数,其中age使用缺省参数值
5不定长参数(可变参数)
加了星号(*)的变量名会存放所有未命名的变量参数
#不定长参数,加了星号(*)的变量名会存有所有未命名的变量参数
def printvarpar(arg1,*vartuple):
print "arg1=",arg1
for var in vartuple:
print var
print "--------"
return
printvarpar(10)
printvarpar(70,60,50,40)
6关键字参数
#关键字参数在函数内部自动组装为一个dict
##注意kw获得的dict是extra的一份拷贝,对于kw的改动不会影响到函数外的extra
def person(name,age,**kw):#other ={}
print('name:',name,"age=",age,"other=",kw)
person("sheldon",25)
person("sheldon",25,city="shenzhen")
extra={'gender':"M","job":"Engineer"}
person("sheldon",25,gender=extra['gender'],job=extra['job'])
person("sheldon",25,**extra)#dictionaries can deliver keyword arguments with the ** operator
7参数组合
在python中定义函数,可以用必选参数,默认参数,可变参数,关键字参数和命名关键字参数,这5种参数都可以组合使用,但是请注意,参数定义的顺序
必须是:必选参数,默认参数,可变参数,命名关键字参数和关键字参数
参考资料
https://docs.python.org/2.6/tutorial/controlflow.html#more-on-defining-functions