函数式编程浅谈

核心思想

所谓函数式编程,就是使用一系列的函数解决问题的编程思想。在此基础上,有以下三个条件,方满足函数式编程:
1、函数可以赋值给变量,赋值后的变量绑定函数
2、允许将函数作为参数传入另一个函数
3、允许函数返回一个函数
例:
定义一个学生类,查找指定条件的学生

class StudentModle:   #学生类
    def __init__(self, name, age, score):
        self.name = name
        self.age = age
        self.score = score

    def __repr__(self):
        return "%s--%d--%d" % (self.name, self.age, self.score)

比如查找学生中年龄大于25岁的学生,编写如下查找方法。

def find_all(list_target):
    for item in list_target:
        if item.age > 25:
            yield item

方法中:list_target为学生列表,遍历学生列表,将满足条件的学生通过yield关键字逐个输出。创建学生列表,输出结果。

list01 = [StudentModle('zs', 20, 92),
          StudentModle('ls', 25, 90),
          StudentModle('ww', 26, 50),
          StudentModle('zl', 20, 100)]
stu = find_all(list01)
for item in stu:
	print(item)
#结果如下
StudentModle('ls', 25, 90)
StudentModle('ww', 26, 50)

同理,如果查找成绩大于90的学生,方法同上,只要改变条件为: if item.score > 90,即可实现该功能。
由此可见,同样类似于这样的查找完全可以提炼为一个通用的方法进行调用,不仅适用于查找学生,任意同类型的查找皆可满足,只需要运用函数式编程思想,将变化的部分整合为一个函数,代码如下:

def find_all(list_target, func_condition):
    for item in list_target:
        if func_condition(item):
            yield item

fun_condition为函数,在函数find_all中作为参数传入,在if条件后作为条件使用,这里使用lambda方法美化程序,还是查找年龄大于25岁的学生,实例如下:

list01 = [StudentModle('zs', 20, 92),
          StudentModle('ls', 25, 90),
          StudentModle('ww', 26, 50),
          StudentModle('zl', 20, 100)]
for item in find_all(list01,lambda stu:stu.age > 25):
	print(item)

# 输出如下
StudentModle('ls', 25, 90)
StudentModle('ww', 26, 50)

在面向对象的大环境下,这样通用的方法适用范围很广,函数式编程的思想在实际运用中能够有效地提高开发效率。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值