python学习笔记---函数式编程
1. 函数本身也可以赋值给变量,即:变量可以指向函数。
>>> f = abs
>>> f(-10)
10
成功!说明变量f
现在已经指向了abs
函数本身。直接调用abs()
函数和调用变量f()
完全相同。
--> 函数名也可以看作是是变量。
编写高阶函数,就是让函数的参数能够接收别的函数(add(-5, 6, abs))
map()
函数接收两个参数,一个是函数,一个是Iterable
,map
将传入的函数依次作用到序列的每个元素,并把结果作为新的Iterator
返回。
reduce()
把一个函数作用在一个序列[x1, x2, x3, ...]
上,这个函数必须接收两个参数,reduce
把结果继续和序列的下一个元素做累积计算.
filter()
也接收一个函数和一个序列, 和map()
不同的是,filter()
把传入的函数依次作用于每个元素,然后根据返回值是True
还是False
决定保留还是丢弃该元素,返回新的Iterator。
sorted()
函数可以对list进行排序。sorted(list, key=function, reverse=True)
lambda x: x * x 关键字lambda
表示匿名函数,冒号前面的x
表示函数参数。
一个完整的装饰器decorator的写法如下:
import functools
def log(func):
@functools.wraps(func) #把原始函数的__name__
等属性复制到wrapper()
函数中
def wrapper(*args, **kw):
print('call %s():' % func.__name__)
return func(*args, **kw)
return wrapper
#带参数的decorator
import functools
def log(text):
def decorator(func):
@functools.wraps(func)
def wrapper(*args, **kw):
print('%s %s():' % (text, func.__name__))
return func(*args, **kw)
return wrapper
return decorator
functools.partial
就是帮助我们创建一个偏函数的,简单总结functools.partial
的作用就是,把一个函数的某些参数给固定住(也就是设置默认值),返回一个新的函数,调用这个新函数会更简单。