展开菜单
首页 精品内容 本月促销 装机必备 Windows macOS软件 IOS软件 Android AI PDF教程 专题
全部分类

当前位置:

首页 > 编程开发 > Python模块与包从定义到实战指南

Python模块与包从定义到实战指南

摘要 这篇文章来系统讲讲Python里的模块与包——从概念到实战,一步到位。你会搞清楚模块到底是什么、里面能装什么、怎么分类(标准库、自定义、第三方)、怎么命名、怎么定义和测试自己写的模块。接着深入探讨各种导入方式、搜索路径的先后顺序,以及那个神秘的__all__到底有什么用。再往后,包的定义、导入

摘要

这篇文章来系统讲讲Python里的模块与包——从概念到实战,一步到位。你会搞清楚模块到底是什么、里面能装什么、怎么分类(标准库、自定义、第三方)、怎么命名、怎么定义和测试自己写的模块。接着深入探讨各种导入方式、搜索路径的先后顺序,以及那个神秘的__all__到底有什么用。再往后,包的定义、导入方式、__init__.py的作用也会一一拆解,最后还会聊聊在全局环境和虚拟环境里怎么安装第三方库。读完这一篇,模块化编程的知识体系基本就搭起来了。

Python模块与包从定义到实战指南

1. 什么是模块?

在Python里,模块(Module)说白了就是一个.py文件,里面装着Python代码——函数、类、变量,甚至直接可执行的语句。模块的核心价值,就是把相关的代码收拢到一起,方便复用,也让逻辑更清晰。

你可以把模块想象成一个“工具箱”,里面放着特定功能的工具(函数、类等)。在别的程序里想用这些工具时,直接把整个工具箱“导入”进来就行,没必要自己从头造轮子。

2. 模块里可以放什么?

一个.py文件(也就是模块)内部可以装不少东西:

  • 函数(Functions):执行特定任务的代码块。
  • 类(Classes):创建对象的蓝图。
  • 变量(Variables):存数据的标识符,包括常量。
  • 可执行语句:模块级别的代码,模块被导入时会执行(通常用来做初始化)。
  • 文档字符串(Docstrings):模块开头的说明文字,解释模块的功能。

比如一个叫math_utils.py的模块,里面可能长这样:

"""数学工具模块"""
PI = 3.14159

def add(a, b):
    """返回两数之和"""
    return a + b

class Calculator:
    def multiply(self, x, y):
        return x * y

# 模块级别的可执行代码
print(f"模块 {__name__} 已被加载")

3. 为什么要使用模块?

用模块是Python编程里公认的好习惯,好处一箩筐:

  • 代码复用:别重复造轮子,一次定义,到处用。
  • 命名空间管理:模块为里头的函数、类等创建了独立的命名空间,不会跟别的模块撞名。比如utils.parse()和config.parse()井水不犯河水。
  • 提高可维护性:大项目拆成逻辑清晰的模块,结构一目了然,改起来也省心。
  • 便于协作:团队里各人负责不同的模块,互不干扰。

4. Python模块的分类

按来源分,Python模块主要有三大类:

4.1 标准库模块(Built-in Modules)

这些是Python解释器自带的,装好就能直接用,不用额外安装。比如:

  • os:跟操作系统打交道。
  • sys:跟Python解释器交互的变量和函数。
  • math:数学运算。
  • datetime:日期时间处理。
import os
print(os.getcwd())  # 打印当前工作目录

4.2 自定义模块(Custom Modules)

自己写的.py文件,项目里组织代码的基本单元。

4.3 第三方模块(Third-party Modules)

其他开发者或组织贡献的,需要用包管理工具(比如pip)安装后才能用。例如:

  • requests:发HTTP请求。
  • numpy:科学计算。
  • pandas:数据分析。

5. 模块的命名、定义与测试

5.1 命名规则

  • 模块文件名得是有效的Python标识符(建议全小写,单词间用下划线)。
  • 别用Python关键字(比如class.py、import.py)或内置模块名(比如sys.py)当名字,否则会覆盖它们。
  • 示例:my_module.py、data_processor.py、utils.py。

5.2 如何定义模块

创建一个新的.py文件,就是在定义一个模块。把相关的代码(函数、类等)写进去就行。

示例:定义greetings.py模块

# greetings.py
"""一个简单的问候模块"""

def say_hello(name):
    return f"Hello, {name}!"

def say_goodbye(name):
    return f"Goodbye, {name}!"

# 测试代码:当模块直接运行时执行
if __name__ == "__main__":
    print(say_hello("Developer"))
    print(say_goodbye("World"))

5.3 如何测试模块

利用if __name__ == "__main__":这个特殊判断。当模块被直接运行(比如python greetings.py)时,__name__变量的值是"__main__",里面的代码就会执行——很适合做模块的自我测试。而当模块被导入时,__name__是模块名,里面的代码不会执行,这样就避免了测试代码干扰主程序。

6. 模块的导入与调用

Python提供了好几种导入方式,适配不同场景。

6.1 基本导入:import module_name

导入整个模块,用的时候要加模块名前缀。

import greetings
message = greetings.say_hello("Alice")
print(message)  # 输出: Hello, Alice!

6.2 导入特定内容:from module_name import name1, name2

从模块里只导入你需要的函数、变量或类,用的时候不用加模块前缀。

from greetings import say_hello
message = say_hello("Bob")  # 直接使用函数名
print(message)

6.3 导入全部内容:from module_name import *

(不推荐)导入模块中所有不以_开头的名字。容易造成命名冲突,代码可读性也差。

from greetings import *
print(say_hello("Charlie"))
print(say_goodbye("Charlie"))

6.4 给模块或导入项起别名:import ... as ...

简化长模块名,或者避免命名冲突。

import numpy as np
from greetings import say_hello as hello

arr = np.array([1, 2, 3])
print(hello("Da vid"))

7. 模块的搜索路径与顺序

当用import语句时,Python解释器会按下面这个顺序,在指定路径里找模块文件(.py、.pyc等):

  1. 内置模块(Built-in):先看是不是Python内置模块(比如sys、builtins)。
  2. 当前目录:找执行脚本所在的目录。
  3. 环境变量PYTHONPATH:查找PYTHONPATH环境变量里列出的目录列表。
  4. 标准库目录:找Python安装路径下的lib等标准库目录。
  5. 第三方库目录:找site-packages目录(通过pip安装的包放这里)。

你可以通过sys.path查看当前的搜索路径列表:

import sys
print(sys.path)

如果模块不在这些路径里,导入就会失败。可以临时修改sys.path添加路径,或者设置PYTHONPATH环境变量。

8. __all__的作用与使用

在模块里,__all__是一个特殊的列表变量,用来控制from module_name import *语句的行为。

  • 作用:当使用from module_name import *时,只有列在__all__里的名字才会被导入。
  • 使用方式:在模块文件顶部定义__all__ = ['function1', 'ClassA', 'variable1']。

示例:

# my_tools.py
__all__ = ['public_func', 'PublicClass']  # 只有这两个会被 `import *` 导入

def public_func():
    return "I am public"

def _private_func():
    return "I am private"

class PublicClass:
    pass

class _PrivateClass:
    pass
# 另一个文件
from my_tools import *
print(public_func())  # 可以访问
# print(_private_func())  # 错误!NameError,因为不在 __all__ 列表中

注意:__all__只影响import *,不影响显式导入(比如from my_tools import _private_func)。

9. 包(Package)

项目一复杂,模块多了,就需要用包(Package)来组织模块。包是一个包含特殊文件__init__.py的目录,目录下可以放多个模块或子包。

my_package/
├── __init__.py
├── module_a.py
├── module_b.py
└── subpackage/
    ├── __init__.py
    └── module_c.py

9.1 包的定义与__init__.py的作用

__init__.py文件的存在,让一个目录被Python视为包。这个文件可以是空的,但通常用来做这些事:

  1. 初始化包:在包被导入时执行一些初始化代码。
  2. 定义__all__:控制from package import *的行为。
  3. 便捷导入:在__init__.py里导入包内的关键模块或函数,这样用户可以直接从包名导入,不用深入模块路径。

示例:my_package/__init__.py

# __init__.py
"""我的工具包"""
from .module_a import main_function  # 相对导入
from .module_b import helper

__all__ = ['main_function', 'helper']  # 定义 from my_package import * 时可导入的内容

print("my_package 初始化完成")

这样一来,用户就可以直接写:from my_package import main_function。

9.2 包的导入方式

包的导入语法跟模块类似,用点号.表示目录层级。

# 导入整个包(会执行 __init__.py)
import my_package
result = my_package.main_function()

# 从包中导入特定模块
from my_package import module_a
from my_package.module_a import specific_function

# 从子包中导入
from my_package.subpackage import module_c

10. 总结

模块和包是Python模块化编程的基石。搞懂模块的分类、导入机制、搜索路径,以及__all__的用法,能帮你更好地组织代码。而掌握包的结构和__init__.py的用法,是搭建大型项目的前置条件。熟练使用pip和虚拟环境管理第三方依赖,更是现代Python开发的必备技能。从写一个简单的.py文件开始,逐步构建你的模块化项目吧!

本文内容来源于网友投稿,如有侵权请联系删除。
作者最新文章
编程开发 Python
相关文章 更多
精品专题 更多
装机必备

正软商城装机必备专区,精选办公、浏览器、安全防护、影音播放、压缩解压、设计创作和系统工具等电脑常用正版软件,帮助用户快速完成新电脑软件配置。

Windows

正软商城Windows软件专区,汇集适用于Windows电脑的办公、设计、安全防护、影音播放、开发工具和系统优化软件,提供软件介绍、系统要求、正版授权及购买下载服务。

macOS软件

正软商城macOS软件专区,精选适用于Mac电脑的办公、设计、影音、效率、开发和系统工具,提供软件功能介绍、macOS兼容版本、正版授权及购买下载服务。

IOS软件

正软商城iOS软件专区,精选适用于iPhone和iPad的办公、学习、影音、设计、效率及AI应用,提供功能介绍、适用设备、系统要求和正版获取方式等信息。

AI

正软商城AI软件专区,汇集AI写作、AI绘画、AI视频、AI办公、AI编程、AI翻译、智能客服和数据分析等人工智能工具,提供功能介绍、适用平台、收费方式及正版购买信息。

Mac软件 更多
photoshop
photoshop

Photoshop 2026 是 Adobe 推出的专业图像处理与视觉设计软件,支持 Windows、macOS 和 iPad 等平台,广泛应用于摄影修图、电商设计、平面海报、数字绘画及视觉合成等创作场景。

Blender
Blender

Blender 是一款免费开源、跨平台的专业 3D 创作软件,集建模、动画、渲染、视频编辑与视觉合成等功能于一体,广泛应用于影视动画、游戏设计和建筑可视化等领域。软件支持 Cycles 物理渲染器与 Eevee 实时渲染引擎,并提供多边形建模、骨骼绑定、物理模拟等专业工具。Blender 兼容 Windows、macOS 和 Linux 系统,安装包轻巧、运行流畅,依托活跃的全球开发者社区持续更新,是从初学者到专业创作者都值得选择的正版 3D 创作工具。

灵活计算器
灵活计算器

灵活计算器是一款笔记式算数应用,支持实时计算、动态关联和云端同步功能。记录、整理和输出之间的过渡会更自然,适合长期写作、做笔记或持续沉淀个人内容。

赤友清理大师
赤友清理大师

赤友清理大师是一款为 Mac 设计的智能清理优化工具,可精准扫描垃圾、大文件、重复文件等,释放磁盘空间。做扫描整理、文字提取和表格转换时,它能把识别后的处理步骤接得更顺,资料录入这类场景会省下不少时间。

极度公式
极度公式

极度公式是一款跨平台专业LaTeX公式识别编辑软件,支持OCR公式识别和多平台编辑。和使用说明,避免使用,享受完整功能与稳定支持。做扫描整理、文字提取和表格转换时,它能把识别后的处理步骤接得更顺,资料录入这类场景会省下不少时间。

图几
图几

图几是一款适用于 macOS 的截图、标注与美化工具,支持离线操作保障隐私。界面整理和高频系统操作被放到一起考虑,桌面或窗口内容一多时,管理起来会更省心。

密码键盘
密码键盘

密码键盘是一款兼具安全性与便捷性的高效密码管理器。日常使用里的持续防护和信息管理会更突出,适合把安全控制放进长期使用流程中的场景。

思源笔记
思源笔记

思源笔记是一款本地笔记软件,提供所见即所得的编辑方式,为长文写作带来顺滑的体验。记录、整理和输出之间的过渡会更自然,适合长期写作、做笔记或持续沉淀个人内容。

Office 365 简体中文
Office 365 简体中文

一款文字处理软件,一种订阅式的跨平台办公软件,基于云平台提供多种服务,通过将 Excel 和 Outlook 等应用与 OneDrive 和 Microsoft Teams 等强大的云服务相结合,Office 365 可让任何人使用任何设备随时随地创建和共享内容。

Mac
WALTR PRO
WALTR PRO

WALTR是一款电脑至iOS文件传输转换工具,操作简单,快速实现文件识别与传送。做扫描整理、文字提取和表格转换时,它能把识别后的处理步骤接得更顺,资料录入这类场景会省下不少时间。

CodeExpander
CodeExpander

CodeExpander 是一款快捷短语输入增强工具,通过键入缩写自动展开为自定义文段,提升工作效率。任务管理和过程控制会更完整,持续下载、批量同步或需要稳定传输流程的场景会更适合它。

Mountain Duck
Mountain Duck

Mountain Duck 是一款能将多个网盘挂载到本地的工具,像本地磁盘一样使用网盘。清理链路的完整性会更好一些,做应用卸载、残留处理和空间整理时,通常能少走很多手动排查步骤。

WINDOWS 更多
3dmax(3ds max)
3dmax(3ds max)

Autodesk 3ds Max 是一款专业的三维建模、动画与渲染软件,广泛应用于建筑可视化、游戏开发、影视动画、广告设计和产品展示等领域。

photoshop
photoshop

Photoshop 2026 是 Adobe 推出的专业图像处理与视觉设计软件,支持 Windows、macOS 和 iPad 等平台,广泛应用于摄影修图、电商设计、平面海报、数字绘画及视觉合成等创作场景。

Blender
Blender

Blender 是一款免费开源、跨平台的专业 3D 创作软件,集建模、动画、渲染、视频编辑与视觉合成等功能于一体,广泛应用于影视动画、游戏设计和建筑可视化等领域。软件支持 Cycles 物理渲染器与 Eevee 实时渲染引擎,并提供多边形建模、骨骼绑定、物理模拟等专业工具。Blender 兼容 Windows、macOS 和 Linux 系统,安装包轻巧、运行流畅,依托活跃的全球开发者社区持续更新,是从初学者到专业创作者都值得选择的正版 3D 创作工具。

Windows 10
Windows 10

Windows 10 是一款微软推出的经典操作系统,拥有硬件兼容性与多任务处理能力。它更偏向把系统状态查看和常用调节动作放在一起,适合需要持续观察和微调设备状态的场景。

极度公式
极度公式

极度公式是一款跨平台专业LaTeX公式识别编辑软件,支持OCR公式识别和多平台编辑。和使用说明,避免使用,享受完整功能与稳定支持。做扫描整理、文字提取和表格转换时,它能把识别后的处理步骤接得更顺,资料录入这类场景会省下不少时间。

密码键盘
密码键盘

密码键盘是一款兼具安全性与便捷性的高效密码管理器。日常使用里的持续防护和信息管理会更突出,适合把安全控制放进长期使用流程中的场景。

思源笔记
思源笔记

思源笔记是一款本地笔记软件,提供所见即所得的编辑方式,为长文写作带来顺滑的体验。记录、整理和输出之间的过渡会更自然,适合长期写作、做笔记或持续沉淀个人内容。

傲梅轻松备份
傲梅轻松备份

傲梅轻松备份是一款专业易用的数据备份软件,为重要数据提供安全保障。日常使用里的持续防护和信息管理会更突出,适合把安全控制放进长期使用流程中的场景。

Office 365 简体中文
Office 365 简体中文

一款文字处理软件,一种订阅式的跨平台办公软件,基于云平台提供多种服务,通过将 Excel 和 Outlook 等应用与 OneDrive 和 Microsoft Teams 等强大的云服务相结合,Office 365 可让任何人使用任何设备随时随地创建和共享内容。

Mac
Wise Folder Hider Pro
Wise Folder Hider Pro

Wise Folder Hider Pro 是一款专业级文件和文件夹隐藏加密软件,为私密数据添加多重保护。高频操作更强调就近处理,浏览、整理和跨目录移动文件时,来回切换和重复点击都会少很多。

WALTR PRO
WALTR PRO

WALTR是一款电脑至iOS文件传输转换工具,操作简单,快速实现文件识别与传送。做扫描整理、文字提取和表格转换时,它能把识别后的处理步骤接得更顺,资料录入这类场景会省下不少时间。

CodeExpander
CodeExpander

CodeExpander 是一款快捷短语输入增强工具,通过键入缩写自动展开为自定义文段,提升工作效率。任务管理和过程控制会更完整,持续下载、批量同步或需要稳定传输流程的场景会更适合它。