高阶函数、递归函数、内置函数
高阶函数
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结果就是一个值