函数式编程

高阶函数

函数本身可以赋值给变量,即:变量可以指向函数。
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的作用就是,把一个函数的某些参数给固定住(也就是设置默认值),返回一个新的函数,调用这个新函数会更简单。

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 直接上正文 函数是Python内建支持的一种封装,我们通过把大段代码拆成函数,通过一层一层的函数调用,就可以把复杂...
    OzanShareing阅读 3,273评论 0 0
  • 文章来源 基本是拷贝的内容,目的是为了将知识点整理在一起。除了一个小结(装饰器部分)提供了我自己的解法,其余基本没...
    王诗翔阅读 3,816评论 0 1
  • 函数式编程就是一种抽象程度很高的编程范式,纯粹的函数式编程语言编写的函数没有变量,因此,任意一个函数,只要输入是确...
    齐天大圣李圣杰阅读 5,414评论 0 2
  • 函数是Python内建支持的一种封装,我们通过把大段代码拆成函数,通过一层一层的函数调用,就可以把复杂任务分解成简...
    祐吢房_2c9a阅读 2,985评论 1 1
  • 幸福是什么?我们都在找幸福,但你找到了没有?它是什么模样的?有没有脚?是泠的还是热的? ­ 其实我也不...
    云承水志阅读 1,703评论 0 3