python从入门到放弃-10-高阶函数
####高阶函数####
高阶函数就是高阶函数
####函数####
函数本身可以赋值给变量,变量可以指向函数
####函数赋值给变量####
def func(x,y,a): print( a(x),a(y) ) func(50,-79,abs)
####map函数####
def cheng(x): return x**2 a = map(cheng,range(10)) for i in a: print(i)
map(函数,元素组合)
讲元素组合的每个元素用函数依次搞一次
####reduce函数####
reduce(函数,[])讲[]中的元素依次相加,函数中必须有两个参数
####filter####
filter(函数,[])
满足函数条件的返回True,不满足的返回False,满足的进行输出
def panduan(x): return x>=10 f = filter(panduan,[1,2,3,4,5,6,76,56,8,9,10,22,55]) for i in f: print(i,end=' ')
####sorted函数####
def paixu(x): if x==0: return 1 else: return 0 li = [1,5,6,0,7,0,3,77,22,88,99,8] print(sorted(li)) for i in sorted(li,key=paixu): print(i,end=' ')
####函数作为返回值####
def a(a): def b(b): return a>b return b s = a(2) print(s(4)) print(s(1))
####匿名函数####
用一次就够了
lambda
f1 = lambda x, y=2: x**y print(f1(2)) print(f1(2,3))
print(reduce(lambda x,y:x+y,range(10))) print(sorted([1,4,5,2,7,6,0,9,0],key=lambda x:x!=0))
####装饰器####
装饰器本身是一个函数,为了不改变别的函数而多加功能的一个玩意
import time def timeit(fun): def wrapper(x,y): starttime = time.time() fun(x,y) endtime = time.time() print("%s函数运行时间为%s" % (fun.__name__, endtime - starttime)) return wrapper @timeit def add(x,y): time.sleep(0.5) return x+y print(add(5,7))