600字范文,内容丰富有趣,生活中的好帮手!
600字范文 > python函数式编程思想_以python为例 浅谈函数式编程思想

python函数式编程思想_以python为例 浅谈函数式编程思想

时间:2022-04-27 01:36:43

相关推荐

python函数式编程思想_以python为例 浅谈函数式编程思想

数据集data_socrestudentid course score

1 math 89

2 english 76

. . .

问题:求各studentid总分

方法1-一般写法:

student_score_total={}

for i in xrange(data_socre.shape[0]):

studentid=data_socre.ix[i,'studentid']

score=data_socre.ix[i,'score']

if studentid in student_score_total.keys():

student_score_total[studentid]+=score

else:

student_score_total[studentid]=score

方法2-函数式编程:

student_score_total=data_socre.ix[:,['studentid','score']].groupby('studentid').agg(sum)

函数式编程要明显优于一般写法(代码量、可读性)

那什么是函数式编程:

函数式编程定义

定义(百度百科):函数式编程是种编程方式,它将电脑运算视为函数的计算。函数编程语言最重要的基础是λ演算(lambda calculus),而且λ演算的函数可以接受函数当作输入(参数)和输出(返回值)。简单说,"函数式编程"是一种"编程范式"(programming paradigm),也就是如何编写程序的方法论。它属于"结构化编程"的一种,主要思想是把运算过程尽量写成一系列嵌套的函数调用。

特性

一、高阶函数

和一般函数差别:

1、输入参数可以是函数

2、输出结果可以是函数

例(python2.7,下同):

输出结果可以是函数

def add(x,y):

def add_1():

return x+y

return add_1

add_1=add(1,2)

print add_1

输入参数可以是函数

def add(x,y):

return x+y

def add_square(add):

return add*add

计算

print add_square(add(1,2))

9

二、闭包

定义(百度百科):闭包就是能够读取其他函数内部变量的函数。在本质上,闭包是将函数内部和函数外部连接起来的桥梁。

构成(必要):

1、外部函数

2、内部函数

3、外部函数变量

例:

def add(x,y):

def add_1():

return x+y

return add_1

外部函数(add):必须将内部函数作为返回

内部函数(add_1):必须要有一个内部函数

外部函数变量(x,y):内部函数必须引用外部函数变量

ps.可以发现闭包和高阶函数是结合在一起使用

三、偏函数

定义:通过固定函数的部分参数值从而达到新建函数的作用

例:

def add(x,y):

return x+y

import functools

add_1 = functools.partial(add,x = 10)

print add_1(y=1) #等价于 add(x=10,y=1)

11

四、柯里化

定义:把有多个参数的函数变成单参数函数 公式:z = f(x, y) 变成 z = f(x)(y)

例:

def add(x, y):

return x+y

print add(1, 2)

3

def add(x):

def add_1(y):

return x + y

return add_1

print add(1)(2)

3

柯里化的偏函数应用

add_1 = add(x=1)

print add_1(y=2)

3

ps.python中只能对第一个参数做偏函数化(或者说只能是从外到内逐次参数做偏函数化)

五、惰性计算

理解:表达式不在它被绑定到变量之后就立即求值,而是在该值被取用的时候求值;逻辑处理与具体运算时间分离,只有当提交具体执行计算任务时,逻辑处理才开始运算

六、只用"表达式"

理解(百度百科):"表达式"(expression)是一个单纯的运算过程,总是有返回值。也就是说,每一步都是单纯的运算,而且都有返回值。

七、没有"副作用"

理解:不产生除函数返回结果以外的任何影响(不修改任何外部变量)

八、引用透明性

理解:输入相同的参数返回相同的结果;计算结果不依赖除输入参数外的其他因素的影响

总结:

函数式编程优点

1、将问题处理拆解为各执行步骤:处理逻辑清晰、代码可读性高、后期易维护更新

2、通过使用已有的函数,大幅减少代码量,提高编程效率

3、将逻辑处理和具体计算分离,通过组件化编程,降低使用者技术门槛(复杂逻辑处理由技术较好的人员事先实现准备好)

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。