加入收藏 | 设为首页 | 会员中心 | 我要投稿 湖南网 (https://www.hunanwang.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 建站 > 正文

在Python中使用函数式编程的最佳实践!

发布时间:2019-01-28 05:46:12 所属栏目:建站 来源:菜鸟带你学编程
导读:简介 Python 是一种成果富厚的高级编程说话。它有通用的尺度库,支持多种编程说话范式,尚有很多内部的透明度。假如你乐意,还可以查察 Python 的底层并修改,乃至能在措施运行的时辰直接修改运行时。 我最近留意到一个有履历的 Python 措施员行使 Python

可修改的类属性很是伤害,由于它们属于类界说而不是类实例,因此也许会不警惕修改到统一个类的多个实例中的状态!

  1. class Bus(object):  
  2.  passengers = set()  
  3.  def add_passenger(self, person):  
  4.  self.passengers.add(person)  
  5. bus1 = Bus()  
  6. bus2 = Bus()  
  7. bus1.add_passenger('abe')  
  8. bus2.add_passenger('bertha')  
  9. bus1.passengers # returns ['abe', 'bertha']  
  10. bus2.passengers # also ['abe', 'bertha'] 

幂等性

任何现实的大局限伟大体系都也许会失败,而失败就要重试。矩阵代数中的“幂等性”的观念也存在于 API 计划中,但对付函数式编程来说,转达之前的输出给幂等函数,永久会返回沟通的值。因此,重做某件工作会收敛到沟通的值。因此,上述 pluralize 函数更抱负的写法为:,起首搜查输入是否已是复数,再思量奈何计较出复数情势。

lambda 和高阶函数行使上的留意点

我发明,在举办短小的操纵(如获取排序的键供 sort 行使)时行使 lambda 很是利便。但假如 lambda 高出一行,那么行使平凡的函数界说也许更好。凡是转达函数可以停止一再,但我在行使时常常提示本身,特另外布局是否会让代码清楚度降落。凡是,将其解析成更小的帮助函数会更清楚。

在必要时行使天生器和高阶函数

偶然辰你会碰着抽象的天生器和迭代器,它们也许会返回庞大可能无穷的序列。一个例子就是 range。在 Python 3 中,range 默认是天生器(相等于Python 2 中的 xrange),停止在迭代大数字时呈现内存不敷的错误,如range(10 ** 10)。假如要在一个也许很大的天生器的每个元素上执行某个操纵,那么行使 map、filter 之类的器材大噶?鲱好的选择。

与此相似,假如不知道你新写的迭代器也许会返回几多功效,但也许会很大,那就应该界说一个天生器。可是,并不是每小我私人都乐意去行使天生器,他们也许更但愿行使列表理会式(list comprehension),从而导致你一开始想要停止的内存不敷错误。天生器是 Python 对付流式编程的实现,它也不必然是函数式的,以是它也有其他 Python 编程方法拥有的安详性缺陷。

在Python中行使函数式编程的最佳实践!

结论

通过赏识成果、库和内部代码来领略本身选择的编程说话,毫无疑问能帮你在调试和阅读代码方面进步速率。领略其他说话或编程说话理论方面的头脑也很故意思,并且能让你成为更强盛、无所不通的措施员。可是,成为Python的高级措施员意味着你不只要知道能做什么,更要领略哪种步崆最有用的方法。在Python中应用函数式编程也许很轻易。为了保持优雅,出格是在共享的代码中保持优雅,我以为最好是行使纯粹的函数式头脑,让代码更轻易猜测,从而更轻易维护,而且具有幂等性。

【责任编辑:庞桂玉 TEL:(010)68476606】
点赞 0

(编辑:湖南网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

热点阅读