了解python函数的参数,是阅读各种库和源码的必需技能,请认真学习并掌握。
1、位置参数:
def fn1(a):pass
def fn2(a,b):pass
msg: pass是占位符,当没有具体功能时,可以使用pass,不会使函数报错
上方函数fn1、fn2里的参数都是位置参数,调用时必须给入对应数量的实参,否则会报错
2、默认参数:
def fn3(a,b=1,c=2):pass
def fn4(a,b,c=1,d=2):pass
msg:python函数的几种参数可以任意组合,但必须按顺序写,否则会报错,顺序为(位置参数,默认参数,可变参数,命名关键字参数,关键字参数)
上方函数fn3的形参b和c 、 fn4的形参c和d就是默认参数,调用时若不给实参,将会使用默认值
默认参数传值方式:
fn3(1,c=4); //a=1,b=1,c=4 #函数fn3的参数a值为1,b没有传参使用默认值1,c通过传参,现在值为4fn4(1,2,d=5,c=3); //a=1,b=2,c=3.d=5 #函数fn4的参数a值为1,b值为2,c通过传参,现在值为3,d通过传参,值为5; 请注意:c和d的位置虽然调换了,但并不影响传值,
扩展:百度搜索 python默认函数的坑,这里有一个面试时大几率碰到的面试题
3、可变参数:
# *c是可变参数def fn5(a,b=1,*c): pass# *b也是可变参数def fn6(a,*b):pass
msg:python函数的几种参数可以任意组合,但必须按顺序写,否则会报错,顺序为(位置参数,默认参数,可变参数,命名关键字参数,关键字参数)
可变参数传参:
#可变参数就是传入的参数数量是可变的,可以是多个,也可以是0个#这里有一个扩展,请百度搜索python参数解构fn5(1,b=2,*[3,4,5]) #把list解构并传入fn6(1,*(3,4,5)) #把tuple解构传入
更多详细扩展,强烈推荐廖雪峰:函数的参数详解(详细,详细,详细)