HOWTO · Python
在 Python 中使用 Pi
在本教程中,我们将在 Python 中使用 pi 值
本页内容
需要数值形式的 π 近似值时,可使用 Python 标准库中的 math.pi。如果计算已经使用 NumPy 数组,numpy.pi 更适合这种场景;如果代数表达式需要保持符号形式,则可使用 sympy.pi。这些都是常量,不能像函数一样调用。下面的示例会说明各自的适用场景、角度转换与获取 π 的区别,以及为什么手动编写近似值主要适用于教学。
使用 Python 的 math.pi 常量获取 π
对于一般数值计算,标准库中的 math 模块是最简单的选择,而且不需要安装第三方包。导入模块后,直接读取 math.pi。它是浮点近似值,因此计算使用的是有限精度,而非精确的数学常量。
运行以下示例。代码及其输出中显示的标签保持英文:
本节中的代码以及显示的标签或输出仍为英文。
import math
radius = 5
area = math.pi * radius**2
print(f"Area: {area}")
Area: 78.53981633974483
此示例使用圆面积公式 πr²。由于 math.pi 是浮点值,计算结果是数值近似值。
不要写成 math.pi();括号会尝试调用这个值,但它并不是函数。对于大多数需要数值 π 的脚本,直接使用 math.pi 即可。
使用 NumPy 的 pi 常量进行数组计算
如果当前计算已经使用 NumPy 数组,那么它的 pi 常量可以方便地配合 NumPy 的数组运算使用。将 NumPy 导入为 np,然后直接引用 np.pi(也称为 numpy.pi),不要加括号。例如,将以度为单位的角度数组乘以 np.pi / 180,可先把其中的角度值转换为弧度,再执行 NumPy 三角函数运算。
下面的示例通过一次数组计算将三个角度值从度转换为弧度。代码及其输出中的标签保持英文:
本节中的代码以及显示的标签或输出仍为英文。
import numpy as np
degrees = np.array([0, 90, 180])
radians = degrees * np.pi / 180
print(radians)
[0. 1.57079633 3.14159265]
NumPy 是第三方依赖,因此必须安装在运行脚本的环境中。如果只是进行单个标量计算,且其他部分并未使用 NumPy,标准库中的 math.pi 无需额外依赖。numpy.pi 表示相同的常见数值常量;它的实际优势是与数组代码保持一致,而不是具有不同的精度。
使用 SymPy 的 pi 进行符号数学运算
如果表达式需要保持符号形式,以便进行代数、微积分或精确形式运算,而不是立即转成浮点计算,可以使用 SymPy。通过 from sympy import pi, symbols 导入后,表达式 pi * x**2 会让 pi 和符号 x 保持符号形式。之后,SymPy 可以像处理数学表达式一样对其进行运算;将表达式转换为数值近似值则是另一个步骤。
这与 math.pi 和 numpy.pi 不同,后两者是数值浮点值。SymPy 也是第三方依赖。只有在需要符号运算时才选择 sympy.pi,不要仅仅为了获取数值形式的 pi 而导入 SymPy。
使用 math.radians 将角度从度转换为弧度
math.radians(degrees) 会将以度为单位的角度转换为弧度。例如,math.radians(90) 得到 π/2 的浮点近似值,而 math.radians(180) 得到 π 的近似值。转换角度时,这种对应关系很有用;但通常不通过这种方式获取 pi:需要 pi 值本身时,请使用 math.pi。
运行以下示例。代码及其输出中显示的标签保持英文:
本节中的代码以及显示的标签或输出仍为英文。
import math
angle_degrees = 90
angle_radians = math.radians(angle_degrees)
print(f"Radians: {angle_radians}")
Radians: 1.5707963267948966
如果现有 NumPy 工作流程需要转换一组角度,NumPy 也提供面向数组的角度转换方式;对于单个标量角度,math.radians 则是清晰易用的标准库选择。
使用自定义的 π 近似值进行教学示例
简短的小数近似值可以帮助说明如何在公式中使用常量。以下代码及其输出中显示的标签保持英文:
本节中的代码以及显示的标签或输出仍为英文。
PI = 3.141592653589793
diameter = 10
circumference = PI * diameter
print(f"Circumference: {circumference}")
Circumference: 31.41592653589793
这些数字仍只是有限精度的近似值,手动复制它们对日常工作没有好处。一般数值计算优先使用 math.pi;自定义数值适合用于讲解公式、常量或近似精度。