参考资料:http://www.cnblogs.com/bingabcd/p/6671368.html
课本:headfirst python、零基础入门学习python(小甲鱼)、流畅的python、腾讯公开课
-参数分类:
普通参数
默认参数
关键字参数
收集参数
--普通参数:
-定义的时候就直接定义的变量名
-调用的时候直接把变量或者值放入指定位置
eg:
def 函数名(参数1,参数2,...):
函数体
#调用
函数名(values1,values2,...)具体值参考的是位置,按位置赋值。
--默认参数
系统函数都有默认的参数值,在使用的时候如果没有特别定义,系统就会默认使用默认值;
还有就是形参带有默认值,调用的时候如果没有对形参的值定义,那么就默认使用默认值
eg:print()函数,在python中输入help(print),就会显示出来他的所有用法,可以看到end=”\n“。
eg: def reg(name,age,gender="male"):
if gender=="male":
print("{0} is a male".format(name))
if gender!="male":
print("{0} is not a male".format(name))
--关键字参数
语法: def func (p1=v1,p2=v2...):
func_body
和默认参数的区别就在于调用的时候方式:
func(p1=value1,p2=value2.......)
相对来说,比较麻烦但是也不容易混淆。也不需要考虑参数的位置了!
eg:
def stu(name="no name",age="0",addr="no addr"):
print("I am a student")
print("My name is {0},i am {1} years old my address is {2}")
n = xiaojing
a = 18
d = wojia
stu(name=n,age=a,addr=d)
--收集参数
把没有位置,不能和定义时的参数位置相对的参数,放入到一个特定的数据结构中
语法: def func(*args):
func_body
调用:
func (p1,p2,p3,.....)
安照list使用方式访问args得到传入的参数
参数名args不是必须这么写,但是我们推荐直接用args,约定俗称
参数名args前需要有星号*
收集参数可以与其他参数共存
收集参数可以不带任何实参调用,此时收集参数为空tuple。
#收集参数之关键字收集参数
-把关键字参数按字典格式存入收集参数
语法:
def func( **kwargs):
func_body
调用:
func( p1=v1,p2=v2,p3=v3,......)
kwargs一般约定俗成,调用的时候把多余的关键字参数放入kwagrs
访问kwargs需要按字典格式访问
###收集参数混合调用的顺序问题:
-收集参数,关键字参数,普通参数可以混合使用
-使用规则就是普通参数和关键字参数优先
-定义的时候一般:普通函数、收集参数tuple、关键字参数、收集参数dict //也就是说,关键字的都在后边,关键字收集参数在最后边。
def stu(name,age,hobby="没有",*args,**kwargs)
字典:for i in list.item()