第二十四章、函数式编程
1. 函数式编程
什么是编程范式
编程范式是一种编程的方法论或思想体系,它定义了程序员如何组织代码、解决问题,并影响语言的语法和设计风格。不同的范式提供不同的抽象方式和代码结构,适用于不同类型的任务。
常见的编程范式:
- 面向过程编程(Procedural Programming, POP);
- 面向对象编程(Object-Oriented Programming, OOP);
- 函数式编程(Functional Programming, FP)。
面向过程编程(POP)
- 核心:以步骤为中心,分解任务为函数和过程。
- 特点:
- 数据与逻辑分离:数据通过函数参数传递。
- 代码组织:线性流程(如 函数A → 函数B → 函数C )。
- 优点:
- 简单直观,适合小型任务。
- 执行效率高。
- 缺点:
- 代码复用性差,维护困难(大型项目易混乱)。
- 数据全局共享易产生副作用。
面向过程编程-示例
# 面向过程编程(Procedural Programming, POP)
zhangsan = {'name':'张三', 'score': 0}
def set_score(stu, new_score):
stu['score'] = new_score
def get_score(stu):
return stu['score']
面向对象编程(OOP)
- 核心:以对象为中心,封装数据与方法。
- 区别:
- 三大特性:封装、继承、多态。
- 代码组织:通过类定义对象交互(如 dog1.eat('骨头') )。
- 优点:
- 模块化强,适合复杂系统(如 GUI、游戏)。
- 代码复用性高(继承/组合)。
- 缺点:
- 学习曲线陡峭(设计模式复杂)。
- 性能略低于 POP(对象创建开销)。
面向对象编程-示例
# 面向对象编程(Object-Oriented Programming, OOP)
class Student:
def __init__(self, name, score=0):
self.name, self.score = name, score
def set_score(self, new_score):
self.score = new_score
def get_score(self):
return self.score
zhangsan = Student('张三')
zhangsan.set_score(100)
print(zhangsan.get_score())
函数式编程(FP)
使用函数解决问题。
- 核心:以纯函数为中心,避免状态与副作用。
- 区别:
- 无状态:数据不可变,函数输出仅依赖输入。
- 高阶函数:函数可作为参数或返回值(如 map/reduce )。
- 优点:
- 线程安全,天然适合并发(如大数据处理)。
- 代码简洁,易于测试(纯函数无副作用)。
- 缺点:
- 学习成本高(递归等概念)。
- 性能问题(大量数据复制)。
函数式编程-示例
函数式编程
打印 1+2+3+...+100的和。
print(sum(range(1, 101)))