Python之函数式编程模块(1)

一、编程方式介绍

一般编程语言支持通过以下几种方式来解决具体的问题:

  • 大多数的编程语言都是过程式的,也就是我们常说的面向过程的编程方式。而所谓程序是指令的列表,告诉计算机如何处理程序的输入。C、Pascal甚至Unix shell都是过程式语言。
  • 然后有一些编程语言是声明式的,主要是你需要编写一个用来描述待解决问题的说明,然后这个语言的具体实现会指明怎样高效的进行计算并解决问题。SQL 可能是你最熟悉的声明式语言了。 一个 SQL 查询语句描述了你想要检索的数据集,并且 SQL 引擎会决定是扫描整张表还是使用索引,应该先执行哪些子句等等。
  • 面向对象编程语言会操作一组对象。其中对象拥有内部状态,并能够以某种方式支持请求和修改这个内部状态的方法。Smalltalk 和 Java 都是面向对象的语言。C++ 和 Python 支持面向对象编程,但并不强制使用面向对象特性。
  • 函数式编程则是将一个问题分解成一系列函数。理想情况下,函数只接受输入并产生输出,没有任何内部状态会影响为给定输入产生的输出。众所周知的函数式语言包括ML家族(标准ML、OCaml和其他变体)和Haskell。

一般语言设计者在设计语言时,会选择侧重强调一种特定的编程方式,但这会让以不同方式来编写程序变得困难。因此有些语言就被设计成多范式语言,用以支持以上几种不同的编程方式。其中Lisp,C++ 和 Python 都是多范式语言;使用这些语言,你可以编写主要为过程式,面向对象或者函数式的程序和函数库。在大型程序中,不同的部分可能会采用不同的方式编写;比如 GUI 可能是面向对象的而处理逻辑则是过程式或者函数式。

这篇文章主要是来讲解函数式编程,因此接下来主要围绕函数式编程进行展开。

二、函数式编程

2.1 定义

函数式编程:即为给定输入,输入会流经一系列函数,每个函数接收输入并输出结果。并且这个过程,在每个函数内部并不会修改全局变量或者有其他副作用。函数式编程允许把函数本身作为参数传入另一个函数,还允许返回一个函数。

2.2 特点

函数式风格有其理论和实践上的优点:

  • 形式证明
  • 模块化
  • 组合性
  • 易于调试和测试

三、函数式编程实践

3.1


Python之函数式编程模块(1)
https://crisescode.github.io/blog/2020/06/19/Python之函数式编程模块/
作者
Crise
发布于
2020年6月19日
许可协议