高阶函数
fitler : 用来过滤序列
defis_odd(n):returnn%2==1l=[1,2,3,4]g=filter(is_odd,l)lambda匿名函数:
defadd(x,y):returnx+y# 等价于add_lambda=lambdax,y:x+ysorted函数: 指定排序规则排序
l=[3,2,-5]print(sorted(l))sorted(l,key=abs)print(l)l=["a","b","A","D"]print(sorted(l))print(sorted(l,key=str.lower))闭包
闭包引用外层变量使用nonlocal
definc():x=0deffn():nonlocalx x=x+1returnxreturnfn f=inc()print(f())print(f())装饰器:
最外面包裹一层:
deflog(func):defwrapper(*args,**kw):print("call %s()"%func.__name__)returnfunc(*args,**kw)returnwrapper@logdefnow():print("111")f=now f()print(f.__name__)print(now.__name__)__name__会把真实调用的函数名字打印出来,,@functools.wraps(func):使用这个就不会显示包装器的名字,,而是原始的函数名字
deflog(func):@functools.wraps(func)defwrapper(*args,**kwargs):print('log')returnfunc(*args,**kwargs)returnwrapper偏函数 partial function
设定参数的默认值,可以降低函数调用的难度
print(int("10000",base=2))int2=functools.partial(int,base=2)print(int2('1000'))