第2章 函数式编程的特点

Python内置了函数式编程的大部分特性。编写函数式的Python代码要求我们尽量避免使用命令式(包括过程式和面向对象式)编程技术。

本章将介绍以下函数式编程技术。

❏ 头等函数和高阶函数,也称“纯函数”。

❏ 不可变数据结构。

❏ 严格求值与非严格求值,也称“积极求值”与“惰性求值”。

❏ 用递归代替显式循环语句。

❏ 函数类型系统。

回顾一下上一章提到的概念,首先,纯粹的函数式编程避免了由于使用变量赋值导致程序显式维护计算状态而带来的复杂性;其次,Python不是纯粹的函数式语言。

本书不会给出函数式编程的确切概念。Python不是纯粹的函数式语言,并且严格的定义并无帮助。我们将关注公认的重要函数式特性,不涉足有争议的模糊地带。

本章的示例代码将涉及Python 3的类型提示语法。类型提示有助于开发者阐述函数定义的核心目标,这里使用mypy工具分析类型提示。与提供单元测试和代码静态分析的pylint类似,mypy也是构建高质量软件工具链的重要组成部分。