过程式与函数式是两种截然不同的编程方式和思考方法,下面以求解素数为例做一下对比。

采用过程式编程

def isPrime(n):mid = int(pow(n,0.5)+1)for i in xrange(2,mid):if n % i == 0 : return Falsereturn Trueprimes=[]
for i in xrange(2,1000):if isPrime(i): primes += [i]print primes

采用函数式编程

print reduce(lambda l,y:not 0 in map(lambda x:y % x, l) and l+[y] or l,xrange(2,1000), [] )

它同上面的算法是一样的,想看懂的话必须先知道map、reduce的用法,参考Python的官方文档,提示一下:l表示已经找到的素数序列,not 0 in map(lambda x:y %x,l) 表示数y能否被l中的任何一个数整除,继而返回l+[y]或者l。对于新手小白想更轻松的学好Python基础,Python爬虫,web开发、大数据,数据分析,人工智能等技术,这里给大家分享系统教学资源,架下我尉(同英): 2763177065 【教程/工具/方法/解疑】
对比一下这两段程序,可以明显地看出过程式的代码虽长但直白,适合初学算法的人,而函数式的代码短而晦涩,有着数学一样的抽象,适合hacker。但是如果你习惯了函数编程的思维方式,反而会觉得代码直观明了。不管采用哪种方式的编程,代码的可读性都是非常重要的,要根据具体的场合选用合适的编程方式。
从效率的角度讲,一般函数式编程的效率会低一些。比如上面的例子,在确定一个数是不是质数时,过程式只要找到了一个它的因数就返回,而函数式需要除以比它小的所有质数,计算量要多一些。

Python 过程式编程与函数式编程相关推荐

  1. python函数式编程读取数据时出现错误_写 Python 代码不可不知的函数式编程技术...

    原标题:写 Python 代码不可不知的函数式编程技术 选自 Medium 作者:Raivat Shah 参与:魔王.Jamin 本文对 Python 中的函数式编程技术进行了简单的入门介绍. 近来, ...

  2. python 函数式编程 库_使用Python的toolz库开始函数式编程的方法

    在这个由两部分组成的系列文章的第二部分中,我们将继续探索如何将函数式编程方法中的好想法引入到 Python中,以实现两全其美. 在上一篇文章中,我们介绍了不可变数据结构 . 这些数据结构使得我们可以编 ...

  3. 几段小代码解释Python命令式编程和函数式编程

    所谓命令式编程,是指How to do,要通过指令告诉计算机如何一步一步地完成预定任务:而所谓函数式编程,可理解为What to do,只需要通过简单的指令告诉计算机要做什么就可以了,代码更加简洁.易 ...

  4. Python基础(六)—函数式编程(内部函数、闭包、lambda、filter/map/reduce/sorce、偏函数)

    内部函数 Python中函数的作用域由def关键字界定,函数内的代码访问变量的方式是从其所在层级由内向外,若往外直至全局作用域都查找不到的话代码会抛异常. 主要看以下代码的差别~~ "&qu ...

  5. Python笔记---一脚踏进函数式编程

    函数式编程 不可变数据结构 三个基本函数 filter() 再做一些练习来熟悉filter() 再做一些思考: map() 再做一些思考: 再再做一些思考: reduce() 再次注意的是: 小结: ...

  6. python 的高级特性:函数式编程,lambda表达式,装饰器

    一.Python语言的高级特性 函数式编程 基于Lambda演算的一种编程方式 程序中只有函数 函数可以作为参数,同样可以作为返回值 纯函数式编程语言:LISP,Haaskell Python函数式编 ...

  7. java 函数式编程_函数式编程杂谈

    比起命令式编程,函数式编程更加强调程序执行的结果而非执行的过程,倡导利用若干简单的执行单元让计算结果不断演进,逐层推导出复杂的运算.本文通过函数式编程的一些趣味用法来阐述学习函数式编程的奇妙之处. 一 ...

  8. 命令式编程与函数式编程

    命令式编程 命令式编程(英语:Imperative programming),是一种描述电脑所需作出的行为的编程典范.几乎所有电脑的硬件工作都是指令式的:几乎所有电脑的硬件都是设计来运行机器码,使用指 ...

  9. java什么是函数式编程,Java 函数式编程(一)初识篇

    本文已授权"后端技术精选"独家发布. 开发者使用Java8编写复杂的集合处理算法,只需要简单的代码就能在多喝cpu上高效运行,这就是Lambda表达式的初衷. 提示:函数式编程和语 ...

  10. 链式编程和函数式编程

    说起链式编程和函数式编程,小伙伴们千万不要紧张. 听着很高大尚,其实也就那么回事.相信有过C#开发经验的,或者其他编程经验的,只要不是OC,一看就知道. 看两行代码: 1 Person *person ...

最新文章

  1. 泡沫破裂之后,强化学习路在何方?
  2. pyhton3 适配器模式编写
  3. Dogleg“狗腿”最优化算法
  4. java面试题二十九 多线程数据共享问题
  5. html选择器是什么,CSS3选择器是什么?
  6. u3d游戏开发视频潭州_游戏美术行业的发展与应用人工智能学院专业介绍及未来前景系列报告会二...
  7. crosstool-ng构建的一个错误的解决
  8. 中国银行业协会首席信息官高峰:银行函证区块链服务平台具备六大优势
  9. cshop是什么开发语言_mes用什么语言开发?mes开发平台
  10. 监听在微信中打开页面时的自带返回按钮事件
  11. 单片机中断函数的编写
  12. visual studio 2015中的webapi生成helpPage,页面不显示方法说明问题解决
  13. MySql学习笔记【二、库相关操作】
  14. apache日志 waf_企业安全体系架构分析:开发架构之开源WAF延申
  15. Python3爬虫项目集:豆瓣电影排行榜top250
  16. iOS 11.2 - 11.3.1 越狱教程
  17. php怎样截取图片部分,PHP截取指定图片大小的方法
  18. hbuilder中uniapp运行微信小程序模拟器时出错
  19. fprintf()函数的用法结合代码
  20. UFS 理解 - Reference Clock

热门文章

  1. 获得杰青的北大教授,竟被本科生质疑硕士毕业双非高校也能任教?网友:荒唐!...
  2. 自然语言处理中的预训练技术发展史
  3. Fast-SCNN的解释以及使用Tensorflow 2.0的实现
  4. Pandownload 下线了,我花了 30 分钟自己搭建了一个网盘
  5. 假如曹操是一名程序员,会发生什么?
  6. Linux之文件权限命令
  7. 目标检测中的Tricks
  8. 应用深度学习进行乳腺癌检测
  9. 黑夜中也健步如飞的路
  10. 《 嵌入式系统设计与实践》一一3.6 测试硬件(和软件)