Python入门之模块

1. 什么是模块?

模块是封装了特定功能的代码文件(以.py为扩展名),由变量、函数、类等组成,用于实现通用或特定的任务(如生成随机数、处理日期、网络请求等)。通过使用模块,我们可以复用代码、简化开发流程,避免重复造轮子。

2. 模块的导入方式

在Python中,使用模块前需要先导入,常用的导入方式有以下几种:

2.1 导入整个模块
使用import模块名导入整个模块,访问模块中的内容时需通过模块名.变量/函数/类的形式。

示例:使用random模块生成 1-6 的随机数(模拟骰子)

import random

# 生成5个1-6的随机整数
for _ in range(5):
    print(random.randint(1, 6))  # 调用random模块的randint函数

2.2 导入模块中的特定内容
使用from模块名import内容导入模块中的指定变量、函数或类,导入后可直接使用名称访问,无需前缀。

示例:导入math模块中的sqrt(开平方)和pi(圆周率)

from math import sqrt, pi

print(sqrt(16))  # 直接使用sqrt,无需math前缀,输出:4.0
print(pi)        # 直接使用pi,输出:3.141592653589793

2.3 导入模块中的所有内容(不推荐)
使用from模块名import *可导入模块中所有公开内容,但可能导致当前代码中的变量与模块中的名称冲突(命名污染),因此通常不建议使用。

示例(不推荐):

from math import *

print(sin(pi/2))  # 直接使用math中的sin函数,输出:1.0

2.4 给模块或内容重命名
使用as关键字给导入的模块或内容起别名,适用于模块名过长、名称冲突等场景。

示例:

# 给模块重命名
import datetime as dt  # 将datetime模块简写为dt
print(dt.datetime.now())  # 输出当前时间,如:2025-11-07 10:00:00

# 给函数重命名
from random import randint as ri
print(ri(1, 10))  # 生成1-10的随机数,等价于randint(1,10)

2.5 导入错误处理
导入不存在的模块会触发ImportError,可以通过异常处理捕获该错误。

示例:

try:
    import non_existent_module  # 导入不存在的模块
except ImportError:
    print("模块不存在,请检查名称或是否已安装!")

3. 模块的类型

Python中的模块主要分为三类:

3.1 自定义模块

由开发者自己编写的.py文件,可在项目中直接导入使用。

示例:创建并使用自定义模块

新建文件my_module.py:

# my_module.py
def greet(name):
    return f"Hello, {name}!"

PI = 3.14159  # 模块中的变量

在同一目录下的main.py中导入:

# main.py
import my_module

print(my_module.greet("Python"))  # 调用自定义函数,输出:Hello, Python!
print(my_module.PI)              # 访问自定义变量,输出:3.14159

3.2 标准库模块
Python预装的模块,无需额外安装即可使用,涵盖字符串处理、日期时间、文件操作等常见功能,是Python的核心优势之一。

常用标准库示例:

datetime:处理日期和时间

from datetime import datetime

today = datetime.today()
print(today.strftime("%Y-%m-%d %H:%M:%S"))  # 格式化输出:2025-11-07 10:30:00

os:操作操作系统(如文件路径、目录)

import os

print(os.getcwd())  # 获取当前工作目录
print(os.listdir("."))  # 列出当前目录下的文件和文件夹

json:处理 JSON 数据

import json

data = {"name": "Alice", "age": 30}
json_str = json.dumps(data)  # 字典转JSON字符串
print(json_str)  # 输出:{"name": "Alice", "age": 30}

4. 第三方模块

由社区或开发者提供的模块,需通过包管理工具安装后使用,主要存储在Python Package Index(PyPI)。

4.1 第三方模块的安装与使用

安装工具:pip

Python 默认自带pip(包管理工具),用于安装 / 卸载第三方模块。若未安装,可参考官方文档配置。
常用pip命令:

# 安装模块(以requests为例,用于网络请求)
pip install requests

# 安装指定版本
pip install requests==2.31.0

# 升级模块
pip install --upgrade requests

# 卸载模块
pip uninstall requests

4.2 使用第三方模块
示例:使用requests模块发送网络请求

import requests

response = requests.get("https://www.baidu.com")
print(f"状态码:{response.status_code}")  # 输出:状态码:200(表示请求成功)
print(f"页面内容前100字符:{response.text[:100]}")

4.2 使用第三方模块
示例:使用requests模块发送网络请求

import requests

response = requests.get("https://www.baidu.com")
print(f"状态码:{response.status_code}")  # 输出:状态码:200(表示请求成功)
print(f"页面内容前100字符:{response.text[:100]}")

4.3 包(Package):模块的组织方式
当模块数量较多时,可通过包(包含多个模块的目录)来组织代码。包需包含一个init.py文件(可为空,用于标识该目录是 Python 包)。

示例1:包的结构与导入

my_package/          # 包目录
├── __init__.py      # 标识为包
├── module1.py       # 模块1
└── module2.py       # 模块2

示例2:在module1.py中定义内容:

# module1.py
def add(a, b):
    return a + b

示例3:在外部文件中导入包中的模块:

# 方式1:导入包中的模块
from my_package import module1
print(module1.add(2, 3))  # 输出:5

# 方式2:直接导入模块中的函数
from my_package.module1 import add
print(add(2, 3))  # 输出:5

4.4 模块的搜索路径
Python导入模块时,会在以下路径中查找(按顺序):

  • 当前执行脚本所在目录
  • 环境变量PYTHONPATH指定的目录
  • Python 安装目录中的标准库路径

可通过sys.path查看搜索路径:

import sys
print(sys.path)  # 输出模块搜索路径列表

5. 总结

模块是Python代码复用的核心机制,通过合理使用标准库、第三方模块和自定义模块,能极大提升开发效率。掌握模块的导入方式、包的组织以及pip的使用,是Python开发的基础技能。标准库和第三方模块的详细文档可参考Python官方文档和PyPI。


原创内容声明

作者 山海
来源平台 山海运维

本文为原创内容,版权归作者所有,未经授权禁止任何形式转载

(0)

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注