高阶函数
函数本身可以赋值给变量,即:变量可以指向函数。
1.map/reduce
map()接收二个参数,一个是函数,一个是Iterable(可序列对象)。返回新的Iterator(迭代器)
比如一个函数f(x)=x^2 ,要把这个函数作用在一个list[1,2,3,4,5]上,实现如下:
def f(x):
return x*x
>>> r=map(f,[1,2,3,4,5])
>>>list(r)
[1,4,9,16,25]
reduce()把结果和序列的下一个元素做累计计算
from functools import reduce
def add(x,y):
return x+y
>>>reduce(add,[1,3,5,7,9])
25
def fn(x,y):
return x*10 +y
>>>reduce(fn,[1,3,5,7,9])
13579
返回函数
匿名函数
匿名函数:lambda x : x*x
装饰器
decorator就是一个返回函数的高级函数
定义一个打印日志的decorator
def log(func):
@functools.wraps(func)
def wrapper(*args,**kw):
print("------")
return func(*args,**kw)
return wrapper
decorator接受一个函数作为参数,并返回一个函数
@log
def now():
print("201-03-15")
定义一个带参的装饰器
def log(text):
def decorator(func):
@functools.wraps(func)
def wrapper(*args,**kw):
print(text)
return func(*args,**kw)
return wrapper
return decorator
@log
def now("execute"):
print("201-03-15")
偏函数
转换大量二进制字符串,定义个int2()的函数,默认吧base=2传进去
def int2(x, base=2):
return int(x, base)
int2('1000000')
function.partial就是帮助我们创建一个偏函数
import functools
int2 = functools.partial(int, base=2)
int2('1000000')
简单总结functools.partial的作用就是,把一个函数的某些参数给固定住(也就是设置默认值),返回一个新的函数,调用这个新函数会更简单。
网友评论