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

 

posted on 2018-01-11 21:37  可爱的春哥  阅读(140)  评论(0)    收藏  举报

导航