python包和模块的内容整理

其中一个部分是, 模块属于含代码的文件, 另一个部分是, 包为含多款模块的目录, 还能借助.py予以识别;采取的方式是使用导入模块, 另外还有从...导入函数;在包里面能够采用相对或者绝对导入, 并且建议运用绝对导入以及精心进行命名, 从而去提升项目结构清楚程度以及可维护性能。

在程序里, 包()以及模块()属于组织相关代码的基本方式, 要是能够合理去运用, 即可让项目的结构变得清晰, 并且易于维护。对于编写规范的程序而言, 理解它们的定义、用法以及区别是非常重要的。

什么是模块()

包含代码的文件被称作模块, 其结尾通常是 .py , 它能够定义函数、类、变量, 还能够包含可执行代码, 在导入模块之后, 其中的内容便可以被使用。

例如,创建一个名为 .py 的文件:

brush:php;toolbar:false; 复制代码
# math_utils.py
def add(a, b):
    return a + b

def multiply(a, b): return a * b

在另一个脚本中导入并使用:

brush:php;toolbar:false; 复制代码
import math_utils

print(math_utils.add(2, 3)) # 输出 5 from math_utils import multiply print(multiply(2, 4)) # 输出 8

什么是包()

包, 那个被称做包含多个模块的目录, 它是专门用来组织相关功能代码的。而要使得一个目录能够被精准识别为包, 那就必然得在这个特定的目录下面包含一个有着特定名称的被称做 .py 的文件, 这个文件, 它既可以是空空如也的状态, 当然, 也能够包含初始化代码。

例如,项目结构如下:

brush:php;toolbar:false; 复制代码
myproject/
│
└── utils/
    ├── __init__.py
    ├── math_utils.py
    └── string_utils.py

其中 utils 是一个包,可以通过以下方式导入:

venv 3.14.2

采用3.14.2的64位官方安装包来使用venv, 在进行这么一番使用此安装包操作之后, 就能够借助标准库venv用以创建虚拟环境了。

下载

brush:php;toolbar:false; 复制代码
from utils.math_utils import add
from utils import string_utils

以.py 来用于定义包的公开接口, 像是进行设置, 或者提前将常用模块导入:

brush:php;toolbar:false; 复制代码
# utils/__init__.py
from .math_utils import add, multiply
from .string_utils import to_upper

all = 'add', 'multiply', 'to_upper'

相对导入与绝对导入

在包的内部范围里, 模块之间能够相互进行导入操作。在运用相对导入这种方式时, 借助点这个符号来表示层级之间的关系。

例如,在 .py 中想使用 .py 的函数:

brush:php;toolbar:false; 复制代码
# string_utils.py
from .math_utils import add

def process(): return add(1, 2)

留意, 相对导入仅仅能够于包之中运用, 不可以直接去运行涵盖相对导入的模块文件, 否则就会出现报错。

常见操作建议

大致就是这些, 把控模块以及包的运用情形, 便能够切实有效地构建项目架构格局, 进而全方位提高代码的可复用程度以及可阅读层次。

相关推荐
VidDown3 小时前
24fps 转 25fps 不只是改个数字:帧率转换、PAL/NTSC 与音频补偿
python·网络协议·音视频·视频编解码·视频
死磕音视频4 小时前
让小模型做选择题:限定候选项并读取 logits 概率的入门实践(附 Python 代码)
开发语言·python·大模型·文本分类·transformers
凤山老林5 小时前
Spring Boot 接入国密 SM2/SM3/SM4 的一些实践记录
spring boot·后端·python
pride.li6 小时前
第03章 Python 教程-基础语法:注释与变量
服务器·前端·后端·python·算法·计算机视觉
databook6 小时前
用 Pydantic AI 从零搭建一个能干活的 AI Agent
人工智能·python
康小旺7 小时前
把 markitdown 做成 Windows 桌面版:拖进文档就出 Markdown,附 233MB→64MB 打包裁剪全过程
python
启观川8 小时前
数据结构与算法-第 3 章 常用算法-贪心算法
数据结构·笔记·python·算法·贪心算法
南笙北梦8 小时前
本地开源大模型多轮对话显存泄漏排查与修复实录
python
小羊没烦恼!8 小时前
如何在IIS6,7中部署ASP.NET网站?
数据库·后端·python·web安全·asp.net
钱栈up8 小时前
扫完 3.5 万文件后,我发现了 521 组散落的同名文件
爬虫·python·数据分析