浅谈python函数式编程(一)

【什么是函数式编程】


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

NO~NO~NO~


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

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

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

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

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

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


【函数式编程的风格】


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

  • 匿名函数

  • 闭包

  • 内置不可变数据结构

  • 递归


【Python函数式编程的风格】


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


  1. 迭代器

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

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



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

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

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


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

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


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


今天先说到这里,下一次我们从生成器接着谈,谢谢各位的关注!





  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值