函数式的python

4 篇文章 0 订阅
1 篇文章 0 订阅

一说起函数式编程语言,脱口而出的就是lisp、haskell、erlang,一说起python的函数式,脑袋里第一反应就是map、filter、reduce。可函数式只是编程范式而已,其具体实现的语言或者语言点只是载体而已,更应该在方法论上考虑和使用函数式。


函数式几大规范,其本质是stateless。state包括两个方面,函数内的state和函数外的state。函数内的state,比如一个addOne函数, 输入1,返回的永远是2,不能在函数内有缓存变量来影响输入与输出的映射;函数外的state,同样是addOne函数,不能在运算的过程中需要读取函数外的某定植或者变量,更不允许addOne在调用过程中修改函数外的某变量。stateless让函数的执行过程与外界无关,与自身无关,所以可以心无旁骛的执行固有操作,这是并行的基础。


python开发中,并不会有stateless的限制,但是既然知道了函数式的好处,也完全可以应用。比如,定义一个新的函数(甚或模块,甚或是一个独立进程,本质没有区别),要切分合理,执行过程足够内聚且不依赖于外部状态,不用缓存内部状态,若有一天性能需求要求在IO处多线程整改结构,该函数可以直接被多线程调用,而不用担心线程间同步的问题。甚或,假定一个复杂的函数需要在另一个项目中被二次使用(一个程序员不能充分利用自己之前的代码简直是一种耻辱),那也可以简单copy就可以使用,而不用关心这部分代码所出的环境及与环境的依赖。


函数式只是一个编程范式,上升一点就是一个思考问题解决问题的范式,也就是一种方法论。而只有方法且仅只有方法,才是是最坚固的轮子。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值