如何进行Python 代码编写在除去完美的、有意义的语句不用而代之以晦涩的、嵌套的表达式的工作后,一个很自然的问题是:“为什么?!”我对
FP
的所有描述都是使用Python
代码做到的 。但最重要的特性
--
可能也是具体情况中最有用的特性 。它消除了副作用(或者至少对一些特殊领域,例如单一体 , 有一些牵制作用) 。绝大部分程序错误
--
和促使程序员求助于调试来解决的问题
--
之所以会发生,是因为在程序执行过程期间 , 变量包含了意外的值 。函数程序只不过根本就不为变量分配值,从而避免了这一特殊问题 。
让我们看一段相当普通的命令代码 。它的目的是打印出乘积大于
25
的几对数字的列表 。组成各对的数字本身是从另外两个列表中挑选出的 。这种操作与程序员在他们程序段中实际执行的操作差不多 。深度剖析Python函数编程技巧设计Python目标何在?总结Python版本大集合讲述Python模块中的Zipfile解析初学Python时注意事项实现这一目的的命令方法如下:这个项目太小,以至于没有什么可能出错 。但我们的目的可能嵌在要同时实现许多其它目的的代码中 。用
"more
stuff"
注释的那些部分是副作用可能导致错误发生的地方 。在这些地方中的任何一处,变量
xs
、
ys
、
bigmuls
、
x
、
y
有可能获得假设节略代码中的意外值 。而且,在执行完这一段代码后 , 所有变量都可能具有稍后代码可能需要也可能不需要的一些值 。很明显,可以使用函数/实例形式的封装和有关作用域的考虑来防止出现这种类型的错误 。而且,您总是可以在执行完变量后
del
它们 。但在实际中,这些指出类型的错误非常普遍 。
目标的函数方法完全消除了这些副作用错误 。以下是可能的一段代码:bigmuls
=
lambda
xs,ys:
filter(
lambda
(x,y):x*y
25,
combine(xs,ys))
combine
=
lambda
xs,ys:
map(None,
xs*len(ys),
dupelms(ys,len(xs)))
dupelms
=
lambda
lst,n:
reduce(
lambda
s,t:s+t,
map(
lambda
l,nn=n:
[l]*n,
lst))
print
bigmuls((1,2,3,4),(10,15,3,22))
在示例中 , 我们将匿名
Python
代码与名称进行绑定,但这不是一定必要的 。我们可以只嵌套定义 。这样做是出于可读性目的;但也是因为
combine()
是一种随处可得的很好实用程序函数(从两个输入列表中产生所有元素对的列表) 。随后的
dupelms()
主要只是帮助
combine()
发挥作用的一种方法 。即使这一函数示例比命令示例更冗长 , 但一旦考虑到实用程序函数可以重用,那么
bigmuls()
中的新代码本身可能比命令版本中的代码数量还要少一些 。
这种函数示例真正的优势在于绝对不会有变量更改其中的任何值 。稍后的代码中没有
可能的不曾预料到的副作用(较早的代码中也不会有) 。很明显,它本身没有副作用并不能保证代码
正确,但即使这样,这也是个优点 。
函数编程总结python的介绍就聊到这里吧,感谢你花时间阅读本站内容,更多关于python函数编程训练题、函数编程总结python的信息别忘了在本站进行查找喔 。
推荐阅读
- 拳头射击游戏,拳头射击游戏无畏契约
- 珠宝类目视频号,视频号珠宝玉石类直播升级管理公告
- 英伟达显卡直连怎么开,英伟达显卡驱动直播
- css对字体的设置,css设置字体样式有哪些
- python封装函数简单 python怎么封装函数
- 死锁java示例代码,死锁的原因及解决方法java
- 双人解谜冒险小游戏,双人解谜的游戏
- mysql怎么插入汉字 mysql怎么输入中文数据
- 有赛车女郎的赛车游戏,赛车女叫什么