一、函数的参数
1、位置参数
2、默认参数
n就是默认参数
def power(x,n=2): s=1 while n > 0: n = n - 1 s = s * x return s
默认参数有个坑,就是 默认参数要设置为 不可变对象,【str和None】
3、可变参数
一般情况下
def calc(numbers): s=1 for n in numbers s=s+n*n return s
调用时需要把参数写成list或者tuple
>>>calc([1,2,3,4])
这样子就不用了【参数前边加个*号】,
def calc(*numbers): s=1 for n in numbers s=s+n*n return s
调用时就直接写入参数就OK
>>>calc(1,2,3,4)
注意:可变参数允许你传入0个或任意个参数
4、关键字参数 **声明【说实话看了一遍还没有明白额】
5、命名关键字参数 * 声明,*号后边的就是命名关键字参数,且在调用的时候必须格式[参数名=‘值’]
注意:使用命名关键字参数时,要特别注意,*不是参数,而是特殊分隔符
声明
def person(name,age,*,city,job): print(name,age,city,job) >>>person('n','a',city='c',job='j')
6、参数组合
二、递归函数
经典函数:阶乘,
def fact(n): ifn==1: return 1 return n*fact(n-1)
递归过深可能导致栈溢出,之后就来个名词“尾递归”,尾递归过深也会溢出
尾递归和循环是等价的