关于python支持的函数式编程

首先是lambda 演算

函数式编程的定义是将函数看做是变量一样的待遇,变量在程序中最简单的有什么待遇呢

1.可以赋值

2.可以作为参数

3.可以改变值Erlang例外)

4.且不说生命周期了和作用域了

λ演算背后蕴含着计算机可计算性的深厚知识,lambda也是图灵模型,是停机问题的一个否定答案。不仅仅是一个匿名函数那样简单

关于lambda 演算,看看这个程序做了什么

  1. map(lambda n:2*n,[1,2,3,4,5]) 

1.lambda n:2*n 本身作为一个匿名函数

2.lambda 本身作为一个参数传入 map()函数 ,这也就是说我的高阶函数,可以将函数变身看成是一个变量作为参数传递,这也是它作为函数受到的高等待遇

关于赋值和改变值,两种方式:

1.f = fun() 不改变函数状态,只改变名称,但是说明函数是可以赋值的

2.可以使用闭包作为改变函数的状态方式,或者使用装饰器来完成函数状态改变

函数式编程的使用也可以提高程序的可读性和减少代码,而且能够清晰的表达函数的功能,如MapReduce就是来自函数式编程的思

Map(func,List)

作用是将func 作用于List中的每一个元素

以刚才的例子举例

  1. map(lambda n:2*n,[1,2,3,4,5]) 

此函数返回:[2,4,6,8,10]

重要的是在于知道这样的方式带给我们的清晰的设计方式

当然函数式编程不是那么几句话就说完的,理解函数式编程的核心是理解 λ演算


评论关闭