浅谈python函数式编程

Posted 工控上位机学习

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了浅谈python函数式编程相关的知识,希望对你有一定的参考价值。

工控课堂

工控课堂【www.gkket.com】工程师必备网站

电气工控自动化-超万元免费资料

【什么是函数式编程】

使用函数写代码,不就是函数式编程了嘛!!

NO~NO~NO~

浅谈python函数式编程

这还要从程序设计语言的分类说起,大多数编程语言可以归为以下几类:

  • 面向过程程序设计语言:程序是一系列指令,命令计算机如何处理输入。代表性的语言有C、Pascal、和Unix shells。

  • 描述性程序设计语言: 程序是你需要解决问题的描述,程序会去执行最有效的解决方法。我们最熟悉的描述性程序设计语言是SQL语言。

  • 面向对象程序设计语言:程序操作一些对象的集合,对象支持内部状态和方法,通过某种方式能够改变。代表性的语言有C++、Java等。

  • 函数式程序设计语言:函数式编程把问题分解为一个函数的集合,理想的情况下,函数只获得输入,产生输出。对于给定的输入,没有任何影响输出的内部状态。比较著名的函数式程序设计语言有ML和Haskell。

所以,函数式编程是一种编程范式,就像面向对象编程思想一样,是一系列想法,不是一套严苛的规定。Python语言支持多范式编程,即支持面向过程、面向对象和函数式编程。Python函数式编程风格的程序通常不那么避免I/O和任何的资源分配,Python经常是提供一个函数式编程的接口,而在内部则使用非函数式编程的特性。例如,一个函数的实现仍然会使用局部变量,但不会修改全局变量和产生其他方面的影响。


【函数式编程的风格】

一般支持函数式编程的语言通常具有如下特征:

  • 匿名函数

  • 闭包

  • 内置不可变数据结构

  • 递归

【Python函数式编程的风格】

Python为支持函数式编程,提供了很多有用的工具,下面就一一介绍。


  1. 迭代器

一个迭代器代表一个数据集,一次返回一个数据集的一个元素。__iter__方法返回一个迭代器,所谓的迭代器就是具有next方法(这个方法在调用时不需要任何参数)的对象。在调用next方法时,迭代器会返回它的下一个值。如果next方法被调用,但迭代器没有值可以返回,就会引发一个StopIteration异常。

内建的iter()函数能够接受任意种对象,并尝试返回一个迭代器,如果对象不支持迭代,引发TypeError异常。

浅谈python函数式编程


2.列表推导式和生成器推导式

在迭代器上通常执行的两个操作有:1)对每个元素进行操作2)对元素集合子集进行满足某些条件的过滤,比如,对给定的一个字符串列表,你想去掉首尾的空格字符,或者,提取子字符串。

列表推导式和生成器推导式都能用简单的语句完成上述功能。你可以使用如下语句去掉字符串中的空格字符。

浅谈python函数式编程

我们也可以通过添加if语句来选择特定的元素。

浅谈python函数式编程

生成器推导式和列表推导式的工作方式类似,只不过返回的不是列表而是生成器(并且不会立刻进行循环),所返回的生成器像下面这样一步一步的进行运算。

浅谈python函数式编程

更奇妙在于,生成器推导式可以在当前的圆括号内直接使用,例如,在函数调用中,不用增加另外一个圆括号,换句话说,可以像下面这样编写代码。

浅谈python函数式编程

转发是最大的鼓励!谢谢您的支持!

重要通知

想加入工控上位机学习技术交流群

请添加班长为好友

并备注:地区-行业-姓名昵称获取进群资格。

浅谈python函数式编程

工控上位机学习
专业专注分享
      

——————————————————————

 来源:pythonld,侵删!

▣ 声明:本文素材系网络收集,工控上位机学习编辑整理。文中所用视频、图片、文字版权归原作者所有。但因转载众多,无法确认真正原始作者,故仅标明转载来源。如涉及作品版权问题,烦请及时联系17621634088(微信同号),我们将即刻确认版权并按国家相关规定支付稿酬!

浅谈python函数式编程

她们都关注了,你还等什么?

浅谈python函数式编程 浅谈python函数式编程 浅谈python函数式编程 浅谈python函数式编程 浅谈python函数式编程 浅谈python函数式编程 浅谈python函数式编程

猛戳阅读原文,开启电气工控自动化之路

以上是关于浅谈python函数式编程的主要内容,如果未能解决你的问题,请参考以下文章

浅谈函数式编程

本期沙龙浅谈函数式编程

浅谈Java 8的函数式编程

Python函数式编程,范围和变量。我哪里错了?

技术分享浅谈函数式编程 - 史原杰

技术浅谈MapReduce 与函数式编程