6.4模块¶

面向对象: 初学者 学习目标:

  • 了解什么是“模块(module)”与“包(package)”。
  • 会使用 import 的 4 种常见方式。
  • 能使用内置模块(如 datetime、os)解决实际小问题。
  • 知道如何安装第三方模块(如 pip install、虚拟环境)。

模块就像“工具箱”,把别人写好的功能打包好,拿来即用。对文科生很友好:处理文本、日期、数据会更高效。

6.4.1 什么是模块?¶

模块(module):一个 Python 文件(.py),里面可以包含变量、函数、类以及可执行代码。
包(package):一个含有 __init__.py 的文件夹,里面又包含多个模块(或子包)。

语法要点(import 的 4 种常见方式)¶

  1. import 模块名
  2. import 模块名 as 别名
  3. from 模块名 import 成员名(函数/类/变量)
  4. from 模块名 import *(不推荐,命名不清晰)

场景类比:

  • import 工具箱:把整个工具箱搬过来,用时 工具箱.工具。
  • from 工具箱 import 锤子:只拿一个工具,直接用 锤子()。
  • import 工具箱 as t:给工具箱起个短名字 t。
In [ ]:
# 示范:四种导入方式(演示以 math 为例)
import math
print('import math -> 使用 math.sqrt(9) =', math.sqrt(9))

import math as m
print('import math as m -> 使用 m.pi =', m.pi)

from math import sqrt, pi
print('from math import sqrt, pi -> sqrt(16) =', sqrt(16), ', pi =', pi)

# 不推荐:from math import *  可能覆盖同名标识符
# from math import *
# print(sin(0))  # 虽然能用,但不清晰,且容易与自定义同名变量/函数冲突

6.4.2 示例:使用 datetime 模块处理日期和时间¶

常见任务:

  • 获取当前时间、今天日期
  • 构造指定日期(纪念日、史料日期)
  • 计算两个日期之间的时间间隔(例如距某个节日的天数)

语法要点¶

  • datetime.datetime.now():当前日期时间
  • datetime.date.today():今天的日期
  • datetime.date(YYYY, M, D):构建日期对象
  • 日期相减得到 timedelta,其 .days 是相差天数
In [ ]:
# 导入 datetime 模块
import datetime

# 获取当前日期和时间
now = datetime.datetime.now()
print('现在的时间是:', now)

# 创建一个特定的日期(如:我最喜欢的节日)
d = datetime.date(2023, 5, 4)
print('我最喜欢的节日是:', d)

# 计算两个日期之间的天数
today = datetime.date.today()
target = datetime.date(2025, 10, 1)
delta = target - today
print('距离 2025 年国庆节还有:', delta.days, '天')

📘 应用举例:统计历史人物的生卒年差距¶

以鲁迅为例(生于 1881-09-25,卒于 1936-10-19),估算其寿命(以年为单位)。

In [ ]:
import datetime
birth = datetime.date(1881, 9, 25)
death = datetime.date(1936, 10, 19)
age_years = (death - birth).days // 365
print('鲁迅大约活了:', age_years, '年')

6.4.3 示例:使用 os 模块操作文件系统¶

常见任务:

  • 获取当前工作目录(我在哪个文件夹里运行)
  • 列出文件/文件夹名称(例如批量核对文献文件名)
  • 拼接路径,跨平台更安全(如 os.path.join)

语法要点¶

  • os.getcwd():当前工作目录
  • os.listdir(path='.'):列出目录内容
  • os.path.join(a, b, ...):拼接路径(比手写 a + '/' + b' 安全)
In [ ]:
import os

# 获取当前工作目录
cwd = os.getcwd()
print('当前工作目录是:', cwd)

# 列出当前目录下的所有文件和文件夹
files = os.listdir()
print('当前目录下的文件和文件夹:', files)

# 跨平台拼接路径(示例:把 data 与 paper.pdf 拼起来)
example_path = os.path.join('data', 'paper.pdf')
print('示例拼接路径:', example_path)

📘 应用举例:批量查看“文献资料”文件夹下的文档名称¶

假设你的资料都放在 ./literature 文件夹里,我们可以快速罗列文件名(便于清点/查重)。

In [ ]:
import os
folder = 'literature'  # 你可以把它改成你真实的路径
if os.path.isdir(folder):
    print('文件夹存在:', folder)
    for name in os.listdir(folder):
        print('-', name)
else:
    print('未找到文件夹:', folder, '\n请先新建该文件夹,或把变量 folder 改成你的真实路径。')

6.4.4 注意事项(容易踩坑的点)¶

  1. 导入名冲突:避免 from 模块 import *,可能覆盖你自己写的同名函数/变量。
  2. 路径分隔符:Windows 与 macOS/Linux 不同,尽量用 os.path.join。
  3. 时区与时间:datetime.now() 取的是本地时间;跨国/跨系统时注意时区问题。
  4. 相对路径 vs 绝对路径:脚本运行位置不同,相对路径可能失效;必要时使用绝对路径。
  5. 版本兼容:第三方库的 API 会随版本变化,出错时先看官方文档/help(模块名)。

6.4.5 练习与参考答案¶

练习 1:使用 datetime,输出你出生那天是星期几。
提示:datetime.date(YYYY, M, D).weekday()(0 表示周一,6 表示周日)。

练习 2:使用 datetime,计算你从出生到今天一共过了多少天。

练习 3:使用 os,列出你电脑上某个特定文件夹中的所有文件名。

请先自行完成,再对照下面的参考答案。

参考答案(示例)¶

注意:把示例中的日期与路径替换为你的真实信息。

In [ ]:
# 练习 1:出生那天是星期几(示例:2000-01-01)
import datetime
birthday = datetime.date(2000, 1, 1)  # ← 请改成你的生日
weekday = birthday.weekday()
week_map = ['周一','周二','周三','周四','周五','周六','周日']
print('你出生那天是:', week_map[weekday])
In [ ]:
# 练习 2:从出生到今天多少天(示例:2000-01-01)
import datetime
birthday = datetime.date(2000, 1, 1)  # ← 请改成你的生日
today = datetime.date.today()
print('你已度过的天数:', (today - birthday).days)
In [ ]:
# 练习 3:列出特定文件夹的所有文件名
import os
folder = '/tmp'  # ← 请改成你的实际路径,例如 'D:/文档/论文'
if os.path.isdir(folder):
    print('列出文件夹:', folder)
    for fname in os.listdir(folder):
        print('-', fname)
else:
    print('未找到该文件夹,请检查路径是否正确:', folder)

6.4.6 补充:模块的安装(第三方库)¶

很多强大的功能来自第三方库(例如文本处理用 regex、数据分析用 pandas、自然语言处理用 jieba)。
安装一般通过 pip:

语法要点¶

  • 安装:pip install 包名(如 pip install pandas)
  • 升级:pip install --upgrade 包名
  • 卸载:pip uninstall 包名
  • 查看已装包:pip list
  • 查看包信息:pip show 包名

若有多个 Python 版本,使用与你的 Python 绑定的 pip:

  • python -m pip install 包名(更稳妥)

虚拟环境(推荐)¶

  • python -m venv .venv 创建环境
  • 激活:
    • Windows:.venv\Scripts\activate
    • macOS/Linux:source .venv/bin/activate
  • 安装包只会进入当前环境,不污染系统。
  • 退出环境:deactivate

Conda(可选)¶

  • 创建:conda create -n myenv python=3.11
  • 激活:conda activate myenv
  • 安装:conda install 包名 或 pip install 包名(在环境里)

常见报错与排查¶

  1. 找不到命令 pip:用 python -m pip ...。
  2. 权限不足:在虚拟环境中安装;或加 --user。
  3. 网络问题:稍后再试;或配置镜像源。
  4. 版本冲突:查看报错提示,固定版本号,如 package==1.2.3。

6.4.7 小结¶

  • 模块 = 工具箱;学会导入与查文档是高效学习的关键。
  • datetime 处理时间日期,os 操作文件系统,是非常常用的标准库。
  • 会安装第三方库(pip/conda)+ 虚拟环境管理,你的项目更可控。

下一步建议:根据你的研究方向(语言学、教育、历史等)列出常用任务,搜索对应模块并做小练习,把它们加入你的“个人工具箱”。

In [ ]: