Python 函数二
补充
1.高阶函数
def f(n): return n*n def foo(a,b,func): return func(a)+func(b) foo(1,2,f) #将函数名作为形式参数变量传递
2.函数名可以进行赋值
3.函数名既可以作为函数参数,也可以作为返回值(函数的内存地址)
4.递归函数
递归函数特点:调用自身函数;有一个结束条件
凡是递归函数可以解决的问题,循环都可以解决
递归函数效率很多时候比较低,不推荐使用,递归次数太多容易导致栈溢出.
4.1阶乘案例
def fac(n): if n==1: return 1 return n*fac(n-1) fac(5)
4.2 菲波那切数列
1 1 2 3 5 8 13
def feibo(n): if n<=1: return n return feibo(n-1)+feibo(n-2)
5.重要内置函数
5.1 filter(function,sequence) 过滤器函数 不对sequence元素改变
序列sequence中每个元素传入函数function中调用,将过滤结果作为迭代器类型返回
5.2 map(function,sequence) 改变sequence元素
序列sequence中每个元素传入函数function中调用,将处理结果作为迭代器类型返回
5.3 reduce(function,sequence,starting_value) 循环调用
使用此函数需要引用 from functools import reduce
例子
def add(x,y): return x+y reduce(add,range(1,10)) #返回45 结果为1+2+3.....+9
原理:reduce将序列sequence中的前两个值传到函数中处理将所得的唯一结果代替前两个值,拿返回的值与剩下序列中的第二个值去调用,循环处理
最后结果会返回给reduce
5.4 lambda 匿名函数
lambda a,b : a+b
浙公网安备 33010602011771号