Python模块和包简单讲解

news/2025/2/24 22:44:23

目录

模块(Module)

包(Package)

包和模块的区别

使用场景


模块(Module)

模块是一个包含Python代码的文件,通常以.py为扩展名。它用于组织相关的函数、类和变量等代码,方便复用和管理。

  • 将代码分割成独立的单元,便于维护和复用。
  • 避免命名冲突。

假设我们有一个模块文件math_operations.py,内容如下:

# math_operations.py

def add(a, b):
    return a + b

def subtract(a, b):
    return a - b

pi = 3.14159

在另一个文件中,我们可以导入并使用这个模块:

# main.py
import math_operations

result = math_operations.add(5, 3)
print(result)  # 输出:8

print(math_operations.pi)  # 输出:3.14159

包(Package)

包是一种更高级的组织方式,它是一个包含多个模块的目录。包可以嵌套,形成层级结构。包的主要作用是进一步组织代码,避免模块名冲突,并提供更清晰的结构。

  • 包是一个包含__init__.py文件的目录。
  • __init__.py可以为空,也可以包含初始化代码。

假设我们有一个包my_package,结构如下:

my_package/
│
├── __init__.py
├── module1.py
└── module2.py

module1.py的内容:

# module1.py

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

module2.py的内容:

# module2.py

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

__init__.py的内容:

# __init__.py

from .module1 import greet
from .module2 import farewell

在另一个文件中,我们可以这样使用包:

# main.py

from my_package import greet, farewell

print(greet("Alice"))  # 输出:Hello, Alice!
print(farewell("Bob"))  # 输出:Goodbye, Bob!

包和模块的区别

  • 模块是一个文件,包含代码。
  • 是一个目录,包含模块和子包,通过__init__.py来标识。

使用场景

  • 如果代码量较小,功能单一,可以使用模块。
  • 如果代码量较大,功能复杂,需要分层管理,可以使用包。

http://www.niftyadmin.cn/n/5864845.html

相关文章

Milvus向量数据库可视化客户端Attu

概述 关于Milvus的介绍,可搜索网络资料。Milvus的使用还在摸索中;打算写一篇,时间待定。 关于Attu的资料: 官网GitHub文档 对于Milvus的数据可视化,有如下两个备选项: Milvus_cli:命令行工…

STM32-智能台灯项目

一、项目需求 1. 红外传感器检测是否有人,有人的话实时检测距离,过近则报警;同时计时,超过固定时间则报警; 2. 按键 1 切换工作模式:智能模式、按键模式、远程模式; 3. 智能模式下,根…

Deepin(Linux)安装MySQL指南

1.下载 地址:https://downloads.mysql.com/archives/community/ 2.将文件解压到 /usr/local 目录下 先cd到安装文件所在目录再解压,本机是cd /home/lu01/Downloads sudo tar -xvJf mysql-9.2.0-linux-glibc2.28-x86_64.tar.xz -C /usr/local3.创建软链…

时间转换(acwing)c/c++/java/python

读取一个整数值,它是工厂中某个事件的持续时间(以秒为单位),请你将其转换为小时:分钟:秒来表示。 输入格式 输入一个整数 NN。 输出格式 输出转换后的时间表示,格式为 hours:minutes:second…

PyTorch下三角矩阵生成函数torch.tril的深度解析

PyTorch下三角矩阵生成函数torch.tril的深度解析 一、下三角矩阵的数学意义与应用场景 下三角矩阵(Lower Triangular Matrix)是线性代数中的基础概念,指主对角线以上元素全为0的方阵。这种特殊矩阵结构在数值计算中具有重要价值&#xff1a…

11. 断藕重连术 - 反转链表(迭代与递归)

哪吒在数据修仙界中继续他的修炼之旅。这一次,他来到了一片神秘的藕断湖,湖面上漂浮着一串串断裂的莲藕,每段莲藕上都刻着数字。湖中央有一座巨大的石碑,上面刻着一行文字:“欲破此湖,需以断藕重连术&#…

三:记录日志-设置成守护进程-改为生产环境

接着二:可以完美实现前端与后端的有机结合后 三需要 实现程序上线后,需要记录日志,将程序设置成系统守护进程,方便管理将环境设置为生产环境,在这一步前还是使用的app.run(),不符合生产需要 记录日志 需求&#xff…

开源一款I2C电机驱动扩展板-FreakStudio多米诺系列

总线直流电机扩展板 原文链接: FreakStudio的博客 摘要 设计了一个I2C电机驱动板,通过I2C接口控制多个电机的转速和方向,支持刹车和减速功能。可连接16个扩展板,具有PWM输出、过流过热保护和可更换电机驱动芯片。支持按键控制…