纯函数(Pure Function)概念

151 阅读1分钟

纯函数(Pure Function)概念


纯函数是函数式编程中的核心概念,满足以下两个条件:

  1. 确定性:相同的输入 永远得到相同的输出,不依赖外部状态或随机性。
  1. 无副作用:不会修改外部变量、参数、I/O设备或全局状态(如网络请求、文件操作等)。

  2. 纯函数的特性包括可缓存性可测试性线程安全性,是构建可靠程序的重要基础。

纯函数示例与对比:

纯函数示例

  1. 数学运算
   function add(a, b) {
     return a + b;
   }
   // 输入 (2,3) 永远返回 5

JavaScript

  1. 数组操作(不修改原数组)
   function appendElement(arr, element) {
     return [...arr, element]; // 返回新数组,原数组不变
   }

JavaScript

  1. 对象属性提取
   def get_name(user):
       return user["name"]  # 不修改输入对象

Python

—-

非纯函数示例

  1. 依赖外部变量
   let count = 0;
   function increment() {
     count++;  // 修改外部变量,副作用!
     return count;
   }

JavaScript

  1. 随机性输出
   import random
   def roll_dice():
       return random.randint(1,6)  # 输出不固定

Python

  1. 修改输入参数
   function updateUser(user) {
     user.age = 30;  // 直接修改输入对象
     return user;
   }

JavaScript

—-

为什么需要纯函数?

  • 可预测性:输入与输出关系明确,调试更简单。
  • 可缓存:可对结果缓存(如 memoization ),提升性能。
  • 并行安全:无共享状态,避免竞态条件(Race Conditions)。

通过避免副作用,纯函数使代码更模块化、可维护性更高,是函数式编程的基石。