Logo
Section 1 / 9

纯函数

函数式编程是 JAX 的核心主题。本节课将详细阐述其具体含义。

导入

纯函数

函数式编程是 JAX 的核心主题。本节课将详细阐述其具体含义。

函数式编程(FP)

函数式编程是一种以函数为核心的编程范式。如果你之前不熟悉函数式编程,也不用担心,因为 JAX 主要只依赖于它的其中一个关键特性。

纯函数

纯函数类似于数学中的函数,具有以下两个特性:

  1. 输出一致性:对于相同的输入参数组合,无论调用多少次函数,其输出结果始终相同。
  2. 无副作用:函数不会修改其局部作用域以外的任何变量。

示例

以下是一个典型的纯函数示例:

1def Square(x): 2 return x*x

相反,下面是一些非纯函数的反例:

1a = 10 2 3def Func(x): 4 global a 5 a = a + 1 # 修改了非局部变量 a 的值 6 7def Func2(x): 8 print("Executing..") # 任何 I/O 操作都属于副作用 9 10# 如果想观察 a 的变化 11Func(a) 12print(a) # 值已被改变

由于 JAX 在进行变换或编译时始终要求使用纯函数,因此在编写 JAX 代码时,我们必须遵循这一原则。

简介

JAX 与 NumPy