高阶函数、递归函数、内置函数

高阶函数

def func(n):
    return n*n

def foo(a,b,f):
    f(a)+f(b)
    return f(a)+f(b)
foo(1,2,func)
print(foo(1,2,func))
print(foo(1,2,func)==5)

def foo3():
    def bar():
        return 7
    # return bar()
    return bar
print(foo3())
#函数名可以进行赋值
#函数名可作为返回值,加括号为返回函数执行结果,不加括号为返回函数名的地址

递归函数

关于递归函数
1、调用函数自身;
2、有一个结束条件;
但凡是递归写的函数用循环都可以解决;
递归的效率比循环低
def fat(n):
    ret = 1
    for i in range(1,n+1):
        ret=ret*i
    return ret
print(fat(8))
def fact(n):
    if n==1:
        return 1
    return n*fact(n-1)
print(fact(8))

#斐波那契数列0,1,1,2,3,5,8,13,21,34,55,89
def fibo(n):
    if n<=1:
        return n
    return fibo(n-1)+fibo(n-2)
print(fibo(8))
内置函数
#过滤器函数filter
str = ('a','b','c','d')
def fun1(s):
    if s!='a':
        return s
ret = filter(fun1,str) #('b','c','d')
print(ret)   #<filter object at 0x00657670>
print(list(ret))  #ret是一个迭代器对象

#元素批量操作函数map
str2=('a','b','c')
def fun2(s):
    return s + 'qwe'
ret2 = map(fun2,str2)
print(ret2)   #<map object at 0x02186DB0>
print(list(ret2))  #ret2也是一个迭代器对象

#reduce
from functools import reduce

def add(x,y):
    return x+y
print(reduce(add,range(1,10)))  #reduce结果就是一个值

 



posted on 2018-03-15 13:59  游乐  阅读(110)  评论(0编辑  收藏  举报

导航