在 Python 中,模块(module)通常对应一个 .py 源文件,其中可定义函数、类与模块级常量。通过 import 将模块载入当前命名空间后,以 模块名.名称 访问其成员,从而把大程序拆分为职责更清晰的文件。若自建模块名与标准库同名,或模块顶层缺少入口保护,可能导致导入行为与预期不符。本节说明常见导入写法、标准库示例及包的基本结构。
import 标准库模块
标准库 math 提供数学函数与常量。导入后使用 模块名.成员 访问:
import math
print(math.sqrt(16)) # 4.0
print(math.pi)
print(math.ceil(2.1)) # 3几种 import 写法
import 模块 引入整个模块;from 模块 import 名称 将指定名称绑定到当前命名空间;import 模块 as 别名 用于缩短前缀。from 模块 import * 会导入大量名称,易与本地定义冲突,一般项目中不宜使用:
import math
from math import sqrt, pi
import math as m
print(sqrt(16))
print(m.sqrt(16))标准库中的常见模块
随机数、日期、路径与 JSON 等能力在标准库中均有对应模块,导入即可使用:
import random
import datetime
import os
import json
print(random.randint(1, 6))
print(datetime.date.today())
print(os.getcwd())
print(json.dumps({"a": 1}))自定义模块
任意 .py 文件均可作为模块。例如同目录下的 mytools.py:
# mytools.py
def greet(name):
return f"Hello, {name}!"
PI = 3.14159
主程序中导入:
import mytools
print(mytools.greet("Tom"))
print(mytools.PI)模块文件须位于解释器搜索路径上(常见为与主程序同一目录),导入时使用文件名(不含 .py)。
if __name__ == '__main__'
模块被 import 时,顶层代码会执行一次。若文件中包含演示或自测代码,不希望导入时自动运行,应将其置于 if __name__ == '__main__': 内。直接运行该文件时条件为真,作为模块导入时为假:
# mytools.py
def greet(name):
return f"Hello, {name}!"
if __name__ == '__main__':
print("这是模块的测试:")
print(greet("Tom"))
包(package)
多个模块可置于同一目录,并包含 __init__.py(可为空),该目录称为包,便于按功能分子目录组织:
mypkg/
__init__.py
utils.py
io.pyfrom mypkg import utils
from mypkg.utils import helper常见错误
- 自建文件名勿与标准库同名;例如项目中的
random.py可能遮蔽标准库random。 from math import *将大量名称导入当前作用域,增加命名冲突风险。- 模块顶层演示代码若无
if __name__ == '__main__'保护,被导入时也会执行。
本节说明了 Python 中模块的导入方式与包的基本结构。下一节介绍递归:基线条件、递归步骤及深度限制。