Python 模块

更新于 2026-01-13

随着我们的程序规模不断增大,代码行数可能会非常多。与其将所有内容都放在一个文件中,不如使用模块(module)将代码按照功能拆分到不同的文件中。这样做可以让我们的代码更有条理,也更容易维护。

模块是一个包含用于执行特定任务的代码的文件。一个模块可以包含变量、函数、类等。让我们来看一个例子:

首先,我们来创建一个模块。输入以下内容并将其保存为 example.py

# Python 模块:加法

def add(a, b):
    result = a + b
    return result

在这里,我们在名为 example 的模块中定义了一个函数 add()。该函数接收两个数字作为参数,并返回它们的和。

在 Python 中导入模块

我们可以将一个模块中的定义(如函数、变量等)导入到另一个模块或 Python 交互式解释器中。

我们使用 import 关键字来实现这一点。要导入我们之前定义的 example 模块,可以在 Python 提示符中输入以下内容:

import example

这并不会将 example 模块中定义的函数名直接导入到当前的符号表中,而只是将模块名 example 导入到当前作用域中。

我们可以使用模块名并通过点号(.)运算符来访问其中的函数。例如:

example.add(4, 5)  # 返回 9

注意

Python 自带大量标准模块。你可以查阅完整的 Python 标准库模块列表 及其使用场景。 标准库模块的导入方式与我们导入自定义模块的方式完全相同。

导入 Python 标准库模块

Python 标准库包含超过 200 个模块。我们可以根据需要导入相应的模块。

假设我们想获取圆周率 π 的值,首先导入 math 模块,然后使用 math.pi。例如:

# 导入标准 math 模块
import math

# 使用 math.pi 获取 π 的值
print("The value of pi is", math.pi)

运行代码后输出:

The value of pi is 3.141592653589793

Python 导入时重命名模块

在 Python 中,我们也可以在导入模块时为其重命名。例如:

# 通过重命名导入模块
import math as m

print(m.pi)

# 输出: 3.141592653589793

在这里,我们将 math 模块重命名为 m。在某些情况下,这可以减少我们的输入量。

请注意,此时名称 math 在当前作用域中不再被识别。因此,math.pi 是无效的,而 m.pi 才是正确的用法。

Python 的 from...import 语句

我们可以从模块中只导入特定的名称,而不导入整个模块。例如:

# 仅从 math 模块导入 pi
from math import pi

print(pi)

# 输出: 3.141592653589793

在这里,我们只从 math 模块中导入了 pi 属性。

导入所有名称

在 Python 中,我们可以使用以下结构从一个模块导入所有名称(定义):

# 从标准模块 math 导入所有名称
from math import *

print("The value of pi is", pi)

在这里,我们导入了 math 模块中的所有定义。这包括当前作用域中所有可见的名称(以单下划线开头的私有定义除外)。

注意:使用星号(*)符号导入所有内容并不是一种良好的编程实践。这可能导致标识符的重复定义,也会降低代码的可读性。

内置函数 dir()

在 Python 中,我们可以使用 dir() 函数列出模块中所有的函数名(以及其他名称)。

例如,前面我们在 example 模块中定义了一个 add() 函数。

我们可以按如下方式对 example 模块使用 dir()

print(dir(example))

输出结果为:

['__builtins__',
 '__cached__',
 '__doc__',
 '__file__',
 '__initializing__',
 '__loader__',
 '__name__',
 '__package__',
 'add']

在这里,我们可以看到一个排序后的名称列表(其中包括 add)。所有以双下划线开头的其他名称都是 Python 默认附加到模块上的属性(并非用户定义的)。

例如,__name__ 属性包含了模块的名称:

import example

example.__name__

# 输出: 'example'

此外,不带任何参数调用 dir() 函数可以列出当前命名空间中定义的所有名称:

a = 1
b = "hello"

import math

print(dir())

输出可能类似于:

['__builtins__', '__doc__', '__name__', 'a', 'b', 'math', 'pyscripter']